summaryrefslogtreecommitdiff
path: root/backends/pulse/pulse-client-stream.c
diff options
context:
space:
mode:
authorMichal Ratajsky <[email protected]>2014-07-20 10:35:28 +0200
committerMichal Ratajsky <[email protected]>2014-07-20 10:35:28 +0200
commit32049d16801b8c0b53448eba4b41df8765a94f84 (patch)
tree6a232dfd4c472aebb79af722cf61855086f56dfb /backends/pulse/pulse-client-stream.c
parentc965e0de05231c7da6c11d5cc1a8d97b6d156f1b (diff)
downloadlibmatemixer-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.c17
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;