[gnome-media] Bug 574198 – don't show virtual streams
- From: Bastien Nocera <hadess src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnome-media] Bug 574198 – don't show virtual streams
- Date: Thu, 21 May 2009 08:52:18 -0400 (EDT)
commit 72f3fb9394009e396f162ff05ba56ddf6a4a7f90
Author: Bastien Nocera <hadess hadess net>
Date: Thu May 21 13:51:29 2009 +0100
Bug 574198 â?? don't show virtual streams
Hide PulseAudio's virtual streams from the volume control.
Based on patch by Marc-Andre Lureau.
---
gnome-volume-control/src/gvc-mixer-control.c | 1 +
gnome-volume-control/src/gvc-mixer-dialog.c | 1 +
gnome-volume-control/src/gvc-mixer-stream.c | 45 +++++++++++++++++++++++---
gnome-volume-control/src/gvc-mixer-stream.h | 3 ++
4 files changed, 45 insertions(+), 5 deletions(-)
diff --git a/gnome-volume-control/src/gvc-mixer-control.c b/gnome-volume-control/src/gvc-mixer-control.c
index 5c9f3f1..fc72fb4 100644
--- a/gnome-volume-control/src/gvc-mixer-control.c
+++ b/gnome-volume-control/src/gvc-mixer-control.c
@@ -806,6 +806,7 @@ update_sink_input (GvcMixerControl *control,
set_icon_name_from_proplist (stream, info->proplist, "applications-multimedia");
gvc_mixer_stream_set_volume (stream, (guint)max_volume);
gvc_mixer_stream_set_is_muted (stream, info->mute);
+ gvc_mixer_stream_set_is_virtual (stream, info->client == PA_INVALID_INDEX);
if (is_new) {
g_hash_table_insert (control->priv->sink_inputs,
diff --git a/gnome-volume-control/src/gvc-mixer-dialog.c b/gnome-volume-control/src/gvc-mixer-dialog.c
index a2a4a87..124ac96 100644
--- a/gnome-volume-control/src/gvc-mixer-dialog.c
+++ b/gnome-volume-control/src/gvc-mixer-dialog.c
@@ -741,6 +741,7 @@ add_stream (GvcMixerDialog *dialog,
} else if (! GVC_IS_MIXER_SOURCE (stream)
&& !GVC_IS_MIXER_SINK (stream)
&& !gvc_mixer_stream_is_event_stream (stream)
+ && !gvc_mixer_stream_is_virtual (stream)
&& g_strcmp0 (id, "org.gnome.VolumeControl") != 0
&& g_strcmp0 (id, "org.PulseAudio.pavucontrol") != 0) {
bar = create_bar (dialog, dialog->priv->apps_size_group, FALSE);
diff --git a/gnome-volume-control/src/gvc-mixer-stream.c b/gnome-volume-control/src/gvc-mixer-stream.c
index eeb5ade..e5cfb19 100644
--- a/gnome-volume-control/src/gvc-mixer-stream.c
+++ b/gnome-volume-control/src/gvc-mixer-stream.c
@@ -48,6 +48,7 @@ struct GvcMixerStreamPrivate
gboolean is_muted;
gboolean can_decibel;
gboolean is_event_stream;
+ gboolean is_virtual;
pa_volume_t base_volume;
pa_operation *change_volume_op;
};
@@ -68,6 +69,7 @@ enum
PROP_IS_MUTED,
PROP_CAN_DECIBEL,
PROP_IS_EVENT_STREAM,
+ PROP_IS_VIRTUAL,
};
static void gvc_mixer_stream_class_init (GvcMixerStreamClass *klass);
@@ -275,6 +277,26 @@ gvc_mixer_stream_set_is_event_stream (GvcMixerStream *stream,
return TRUE;
}
+gboolean
+gvc_mixer_stream_is_virtual (GvcMixerStream *stream)
+{
+ g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+ return stream->priv->is_virtual;
+}
+
+gboolean
+gvc_mixer_stream_set_is_virtual (GvcMixerStream *stream,
+ gboolean is_virtual)
+{
+ g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+ stream->priv->is_virtual = is_virtual;
+ g_object_notify (G_OBJECT (stream), "is-virtual");
+
+ return TRUE;
+}
+
const char *
gvc_mixer_stream_get_application_id (GvcMixerStream *stream)
{
@@ -419,6 +441,9 @@ gvc_mixer_stream_set_property (GObject *object,
case PROP_IS_EVENT_STREAM:
gvc_mixer_stream_set_is_event_stream (self, g_value_get_boolean (value));
break;
+ case PROP_IS_VIRTUAL:
+ gvc_mixer_stream_set_is_virtual (self, g_value_get_boolean (value));
+ break;
case PROP_CAN_DECIBEL:
gvc_mixer_stream_set_can_decibel (self, g_value_get_boolean (value));
break;
@@ -475,6 +500,9 @@ gvc_mixer_stream_get_property (GObject *object,
case PROP_IS_EVENT_STREAM:
g_value_set_boolean (value, self->priv->is_event_stream);
break;
+ case PROP_IS_VIRTUAL:
+ g_value_set_boolean (value, self->priv->is_virtual);
+ break;
case PROP_CAN_DECIBEL:
g_value_set_boolean (value, self->priv->can_decibel);
break;
@@ -517,15 +545,15 @@ gvc_mixer_stream_real_change_is_muted (GvcMixerStream *stream,
gboolean
gvc_mixer_stream_push_volume (GvcMixerStream *stream)
{
- pa_operation *op;
+ pa_operation *op;
gboolean ret;
g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
ret = GVC_MIXER_STREAM_GET_CLASS (stream)->push_volume (stream, (gpointer *) &op);
if (ret) {
- if (stream->priv->change_volume_op != NULL)
- pa_operation_unref (stream->priv->change_volume_op);
- stream->priv->change_volume_op = op;
- }
+ if (stream->priv->change_volume_op != NULL)
+ pa_operation_unref (stream->priv->change_volume_op);
+ stream->priv->change_volume_op = op;
+ }
return ret;
}
@@ -658,6 +686,13 @@ gvc_mixer_stream_class_init (GvcMixerStreamClass *klass)
"Whether stream's role is to play an event",
FALSE,
G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+ g_object_class_install_property (gobject_class,
+ PROP_IS_VIRTUAL,
+ g_param_spec_boolean ("is-virtual",
+ "is virtual stream",
+ "Whether the stream is virtual",
+ FALSE,
+ G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
g_type_class_add_private (klass, sizeof (GvcMixerStreamPrivate));
}
diff --git a/gnome-volume-control/src/gvc-mixer-stream.h b/gnome-volume-control/src/gvc-mixer-stream.h
index fb45c6f..4171ca3 100644
--- a/gnome-volume-control/src/gvc-mixer-stream.h
+++ b/gnome-volume-control/src/gvc-mixer-stream.h
@@ -75,6 +75,7 @@ const char * gvc_mixer_stream_get_icon_name (GvcMixerStream *stream);
const char * gvc_mixer_stream_get_description (GvcMixerStream *stream);
const char * gvc_mixer_stream_get_application_id (GvcMixerStream *stream);
gboolean gvc_mixer_stream_is_event_stream (GvcMixerStream *stream);
+gboolean gvc_mixer_stream_is_virtual (GvcMixerStream *stream);
/* private */
gboolean gvc_mixer_stream_set_volume (GvcMixerStream *stream,
@@ -93,6 +94,8 @@ gboolean gvc_mixer_stream_set_icon_name (GvcMixerStream *stream,
const char *name);
gboolean gvc_mixer_stream_set_is_event_stream (GvcMixerStream *stream,
gboolean is_event_stream);
+gboolean gvc_mixer_stream_set_is_virtual (GvcMixerStream *stream,
+ gboolean is_event_stream);
gboolean gvc_mixer_stream_set_application_id (GvcMixerStream *stream,
const char *application_id);
gboolean gvc_mixer_stream_set_base_volume (GvcMixerStream *stream,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]