[libgnome-volume-control] Emit a signal for stream-changed



commit 7e5504db3d85b7a4b5dc0207c47af09b426ad75a
Author: Alexander Hofbauer <alex derhofbauer at>
Date:   Sat Feb 7 19:22:56 2015 +0100

    Emit a signal for stream-changed
    
    https://bugzilla.gnome.org/show_bug.cgi?id=744140

 gvc-mixer-control.c |   29 +++++++++++++++++++++++++++++
 gvc-mixer-control.h |    2 ++
 2 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/gvc-mixer-control.c b/gvc-mixer-control.c
index 29ece3d..e62edf4 100644
--- a/gvc-mixer-control.c
+++ b/gvc-mixer-control.c
@@ -104,6 +104,7 @@ enum {
         STATE_CHANGED,
         STREAM_ADDED,
         STREAM_REMOVED,
+        STREAM_CHANGED,
         CARD_ADDED,
         CARD_REMOVED,
         DEFAULT_SINK_CHANGED,
@@ -1526,6 +1527,11 @@ update_sink (GvcMixerControl    *control,
                 /* Always sink on a new stream to able to assign the right stream id
                  * to the appropriate outputs (multiple potential outputs per stream). */
                 sync_devices (control, stream);
+        } else {
+                g_signal_emit (G_OBJECT (control),
+                               signals[STREAM_CHANGED],
+                               0,
+                               gvc_mixer_stream_get_id (stream));
         }
 
         /*
@@ -1646,6 +1652,11 @@ update_source (GvcMixerControl      *control,
                                      g_object_ref (stream));
                 add_stream (control, stream);
                 sync_devices (control, stream);
+        } else {
+                g_signal_emit (G_OBJECT (control),
+                               signals[STREAM_CHANGED],
+                               0,
+                               gvc_mixer_stream_get_id (stream));
         }
 
         if (control->priv->profile_swapping_device_id != GVC_MIXER_UI_DEVICE_INVALID) {
@@ -1751,6 +1762,11 @@ update_sink_input (GvcMixerControl          *control,
                                      GUINT_TO_POINTER (info->index),
                                      g_object_ref (stream));
                 add_stream (control, stream);
+        } else {
+                g_signal_emit (G_OBJECT (control),
+                               signals[STREAM_CHANGED],
+                               0,
+                               gvc_mixer_stream_get_id (stream));
         }
 }
 
@@ -1797,6 +1813,11 @@ update_source_output (GvcMixerControl             *control,
                                      GUINT_TO_POINTER (info->index),
                                      g_object_ref (stream));
                 add_stream (control, stream);
+        } else {
+                g_signal_emit (G_OBJECT (control),
+                               signals[STREAM_CHANGED],
+                               0,
+                               gvc_mixer_stream_get_id (stream));
         }
 }
 
@@ -3208,6 +3229,14 @@ gvc_mixer_control_class_init (GvcMixerControlClass *klass)
                               NULL, NULL,
                               g_cclosure_marshal_VOID__UINT,
                               G_TYPE_NONE, 1, G_TYPE_UINT);
+        signals [STREAM_CHANGED] =
+                g_signal_new ("stream-changed",
+                              G_TYPE_FROM_CLASS (klass),
+                              G_SIGNAL_RUN_LAST,
+                              G_STRUCT_OFFSET (GvcMixerControlClass, stream_changed),
+                              NULL, NULL,
+                              g_cclosure_marshal_VOID__UINT,
+                              G_TYPE_NONE, 1, G_TYPE_UINT);
         signals [CARD_ADDED] =
                 g_signal_new ("card-added",
                               G_TYPE_FROM_CLASS (klass),
diff --git a/gvc-mixer-control.h b/gvc-mixer-control.h
index 3f0ea2e..4ba1d3b 100644
--- a/gvc-mixer-control.h
+++ b/gvc-mixer-control.h
@@ -59,6 +59,8 @@ typedef struct
                                         GvcMixerControlState  new_state);
         void (*stream_added)           (GvcMixerControl *control,
                                         guint            id);
+        void (*stream_changed)         (GvcMixerControl *control,
+                                        guint            id);
         void (*stream_removed)         (GvcMixerControl *control,
                                         guint            id);
         void (*card_added)             (GvcMixerControl *control,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]