summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiovanni Campagna <gcampagna@src.gnome.org>2012-10-18 19:14:34 +0200
committerGiovanni Campagna <gcampagna@src.gnome.org>2012-12-08 15:45:28 +0100
commitc1f42d50e3998193b952eb3ba00fe737a263d601 (patch)
tree68df38f7497ee950c04585e6ee5e31fb6fb62fdf
parent740bab171443cda76d27ca77ac31717475ad51dd (diff)
downloadlibgnome-volume-control-c1f42d50e3998193b952eb3ba00fe737a263d601.tar.gz
GvcMixerStream: expose form factor from PulseAudio
https://bugzilla.gnome.org/show_bug.cgi?id=675902
-rw-r--r--gvc-mixer-control.c2
-rw-r--r--gvc-mixer-stream.c38
-rw-r--r--gvc-mixer-stream.h3
3 files changed, 43 insertions, 0 deletions
diff --git a/gvc-mixer-control.c b/gvc-mixer-control.c
index b6f6a39..9caa31b 100644
--- a/gvc-mixer-control.c
+++ b/gvc-mixer-control.c
@@ -1494,6 +1494,7 @@ update_sink (GvcMixerControl *control,
gvc_mixer_stream_set_card_index (stream, info->card);
gvc_mixer_stream_set_description (stream, info->description);
set_icon_name_from_proplist (stream, info->proplist, "audio-card");
+ gvc_mixer_stream_set_form_factor (stream, pa_proplist_gets (info->proplist, PA_PROP_DEVICE_FORM_FACTOR));
gvc_mixer_stream_set_sysfs_path (stream, pa_proplist_gets (info->proplist, "sysfs.path"));
gvc_mixer_stream_set_volume (stream, (guint)max_volume);
gvc_mixer_stream_set_is_muted (stream, info->mute);
@@ -1620,6 +1621,7 @@ update_source (GvcMixerControl *control,
gvc_mixer_stream_set_card_index (stream, info->card);
gvc_mixer_stream_set_description (stream, info->description);
set_icon_name_from_proplist (stream, info->proplist, "audio-input-microphone");
+ gvc_mixer_stream_set_form_factor (stream, pa_proplist_gets (info->proplist, PA_PROP_DEVICE_FORM_FACTOR));
gvc_mixer_stream_set_volume (stream, (guint)max_volume);
gvc_mixer_stream_set_is_muted (stream, info->mute);
gvc_mixer_stream_set_can_decibel (stream, !!(info->flags & PA_SOURCE_DECIBEL_VOLUME));
diff --git a/gvc-mixer-stream.c b/gvc-mixer-stream.c
index d3e01b6..59e7b1f 100644
--- a/gvc-mixer-stream.c
+++ b/gvc-mixer-stream.c
@@ -48,6 +48,7 @@ struct GvcMixerStreamPrivate
char *description;
char *application_id;
char *icon_name;
+ char *form_factor;
char *sysfs_path;
gboolean is_muted;
gboolean can_decibel;
@@ -71,6 +72,7 @@ enum
PROP_DESCRIPTION,
PROP_APPLICATION_ID,
PROP_ICON_NAME,
+ PROP_FORM_FACTOR,
PROP_SYSFS_PATH,
PROP_VOLUME,
PROP_DECIBEL,
@@ -415,6 +417,13 @@ gvc_mixer_stream_get_icon_name (GvcMixerStream *stream)
}
const char *
+gvc_mixer_stream_get_form_factor (GvcMixerStream *stream)
+{
+ g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL);
+ return stream->priv->form_factor;
+}
+
+const char *
gvc_mixer_stream_get_sysfs_path (GvcMixerStream *stream)
{
g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL);
@@ -450,6 +459,19 @@ gvc_mixer_stream_set_icon_name (GvcMixerStream *stream,
}
gboolean
+gvc_mixer_stream_set_form_factor (GvcMixerStream *stream,
+ const char *form_factor)
+{
+ g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+ g_free (stream->priv->form_factor);
+ stream->priv->form_factor = g_strdup (form_factor);
+ g_object_notify (G_OBJECT (stream), "form-factor");
+
+ return TRUE;
+}
+
+gboolean
gvc_mixer_stream_set_sysfs_path (GvcMixerStream *stream,
const char *sysfs_path)
{
@@ -641,6 +663,9 @@ gvc_mixer_stream_set_property (GObject *object,
case PROP_ICON_NAME:
gvc_mixer_stream_set_icon_name (self, g_value_get_string (value));
break;
+ case PROP_FORM_FACTOR:
+ gvc_mixer_stream_set_form_factor (self, g_value_get_string (value));
+ break;
case PROP_SYSFS_PATH:
gvc_mixer_stream_set_sysfs_path (self, g_value_get_string (value));
break;
@@ -707,6 +732,9 @@ gvc_mixer_stream_get_property (GObject *object,
case PROP_ICON_NAME:
g_value_set_string (value, self->priv->icon_name);
break;
+ case PROP_FORM_FACTOR:
+ g_value_set_string (value, self->priv->form_factor);
+ break;
case PROP_SYSFS_PATH:
g_value_set_string (value, self->priv->sysfs_path);
break;
@@ -912,6 +940,13 @@ gvc_mixer_stream_class_init (GvcMixerStreamClass *klass)
NULL,
G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
g_object_class_install_property (gobject_class,
+ PROP_FORM_FACTOR,
+ g_param_spec_string ("form-factor",
+ "Form Factor",
+ "Device form factor for this stream, as reported by PulseAudio",
+ NULL,
+ G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+ g_object_class_install_property (gobject_class,
PROP_SYSFS_PATH,
g_param_spec_string ("sysfs-path",
"Sysfs path",
@@ -996,6 +1031,9 @@ gvc_mixer_stream_finalize (GObject *object)
g_free (mixer_stream->priv->icon_name);
mixer_stream->priv->icon_name = NULL;
+ g_free (mixer_stream->priv->form_factor);
+ mixer_stream->priv->form_factor = NULL;
+
g_free (mixer_stream->priv->sysfs_path);
mixer_stream->priv->sysfs_path = NULL;
diff --git a/gvc-mixer-stream.h b/gvc-mixer-stream.h
index 435f933..fefb1c8 100644
--- a/gvc-mixer-stream.h
+++ b/gvc-mixer-stream.h
@@ -87,6 +87,7 @@ gboolean gvc_mixer_stream_change_is_muted (GvcMixerStream *stream,
gboolean gvc_mixer_stream_is_running (GvcMixerStream *stream);
const char * gvc_mixer_stream_get_name (GvcMixerStream *stream);
const char * gvc_mixer_stream_get_icon_name (GvcMixerStream *stream);
+const char * gvc_mixer_stream_get_form_factor (GvcMixerStream *stream);
const char * gvc_mixer_stream_get_sysfs_path (GvcMixerStream *stream);
GIcon * gvc_mixer_stream_get_gicon (GvcMixerStream *stream);
const char * gvc_mixer_stream_get_description (GvcMixerStream *stream);
@@ -110,6 +111,8 @@ gboolean gvc_mixer_stream_set_description (GvcMixerStream *stream,
const char *description);
gboolean gvc_mixer_stream_set_icon_name (GvcMixerStream *stream,
const char *name);
+gboolean gvc_mixer_stream_set_form_factor (GvcMixerStream *stream,
+ const char *form_factor);
gboolean gvc_mixer_stream_set_sysfs_path (GvcMixerStream *stream,
const char *sysfs_path);
gboolean gvc_mixer_stream_set_is_event_stream (GvcMixerStream *stream,