diff options
author | Michal Ratajsky <[email protected]> | 2014-07-20 10:35:28 +0200 |
---|---|---|
committer | Michal Ratajsky <[email protected]> | 2014-07-20 10:35:28 +0200 |
commit | 32049d16801b8c0b53448eba4b41df8765a94f84 (patch) | |
tree | 6a232dfd4c472aebb79af722cf61855086f56dfb /backends/pulse/pulse-client-stream.c | |
parent | c965e0de05231c7da6c11d5cc1a8d97b6d156f1b (diff) | |
download | libmatemixer-32049d16801b8c0b53448eba4b41df8765a94f84.tar.bz2 libmatemixer-32049d16801b8c0b53448eba4b41df8765a94f84.tar.xz |
Fix setting ext-stream parent and generalize it in PulseClientStream
Diffstat (limited to 'backends/pulse/pulse-client-stream.c')
-rw-r--r-- | backends/pulse/pulse-client-stream.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/backends/pulse/pulse-client-stream.c b/backends/pulse/pulse-client-stream.c index d725146..b99c498 100644 --- a/backends/pulse/pulse-client-stream.c +++ b/backends/pulse/pulse-client-stream.c @@ -26,6 +26,8 @@ #include <pulse/pulseaudio.h> #include "pulse-client-stream.h" +#include "pulse-sink.h" +#include "pulse-source.h" #include "pulse-stream.h" struct _PulseClientStreamPrivate @@ -335,6 +337,7 @@ pulse_client_stream_get_parent (MateMixerClientStream *client) static gboolean pulse_client_stream_set_parent (MateMixerClientStream *client, MateMixerStream *parent) { + MateMixerStreamFlags flags; PulseClientStream *pclient; PulseClientStreamClass *klass; @@ -347,6 +350,20 @@ pulse_client_stream_set_parent (MateMixerClientStream *client, MateMixerStream * if (pclient->priv->parent == parent) return TRUE; + flags = mate_mixer_stream_get_flags (MATE_MIXER_STREAM (pclient)); + + /* Validate the parent stream */ + if (flags & MATE_MIXER_STREAM_INPUT && !PULSE_IS_SOURCE (parent)) { + g_warning ("Could not change stream parent to %s: not a parent input stream", + mate_mixer_stream_get_name (MATE_MIXER_STREAM (parent))); + return FALSE; + } else if (flags & MATE_MIXER_STREAM_OUTPUT && !PULSE_IS_SINK (parent)) { + g_warning ("Could not change stream parent to %s: not a parent output stream", + mate_mixer_stream_get_name (MATE_MIXER_STREAM (parent))); + return FALSE; + } + + /* Set the parent */ if (klass->set_parent (pclient, PULSE_STREAM (parent)) == FALSE) return FALSE; |