summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Hofbauer <alex@derhofbauer.at>2015-02-07 19:22:56 +0100
committerBastien Nocera <hadess@hadess.net>2015-10-05 15:36:43 +0200
commit7e5504db3d85b7a4b5dc0207c47af09b426ad75a (patch)
tree565f8a4d3a05ca2081b1a3c718af58e8283d373a
parent0a79019088ce2f50b671c7964b8fd69c24a465b9 (diff)
downloadlibgnome-volume-control-7e5504db3d85b7a4b5dc0207c47af09b426ad75a.tar.gz
Emit a signal for stream-changed
https://bugzilla.gnome.org/show_bug.cgi?id=744140
-rw-r--r--gvc-mixer-control.c29
-rw-r--r--gvc-mixer-control.h2
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,