From: Sjoerd Simons Date: Mon, 16 Feb 2009 21:25:31 +0000 (+0000) Subject: When finding a better element to use for volume, reset the current one and transfer... X-Git-Url: https://git.0d.be/?p=empathy.git;a=commitdiff_plain;h=2f7ab55f4ba0977db7bcf55a339d3b971c32cc9c When finding a better element to use for volume, reset the current one and transfer the volume changes to the new one Signed-off-by: Sjoerd Simons svn path=/trunk/; revision=2492 --- diff --git a/libempathy-gtk/empathy-audio-sink.c b/libempathy-gtk/empathy-audio-sink.c index d304a267..83a14d4b 100644 --- a/libempathy-gtk/empathy-audio-sink.c +++ b/libempathy-gtk/empathy-audio-sink.c @@ -64,9 +64,19 @@ empathy_audio_sink_element_added_cb (FsElementAddedNotifier *notifier, { EmpathyGstAudioSinkPrivate *priv = EMPATHY_GST_AUDIO_SINK_GET_PRIVATE (self); - if (g_object_class_find_property (G_OBJECT_CLASS (element), "volume")) + if (g_object_class_find_property (G_OBJECT_GET_CLASS (element), "volume")) { - priv->volume = element; + gdouble volume; + + volume = empathy_audio_sink_get_volume (self); + empathy_audio_sink_set_volume (self, 1.0); + + if (priv->volume != NULL) + g_object_unref (priv->volume); + priv->volume = g_object_ref (element); + + if (volume != 1.0) + empathy_audio_sink_set_volume (self, volume); } } @@ -82,7 +92,10 @@ empathy_audio_sink_init (EmpathyGstAudioSink *obj) G_CALLBACK (empathy_audio_sink_element_added_cb), obj); resample = gst_element_factory_make ("audioresample", NULL); + priv->volume = gst_element_factory_make ("volume", NULL); + g_object_ref (priv->volume); + priv->sink = gst_element_factory_make ("gconfaudiosink", NULL); fs_element_added_notifier_add (priv->notifier, GST_BIN (priv->sink)); @@ -171,6 +184,9 @@ empathy_audio_sink_dispose (GObject *object) g_object_unref (priv->notifier); priv->notifier = NULL; + if (priv->volume != NULL) + g_object_unref (priv->volume); + priv->volume = NULL; if (G_OBJECT_CLASS (empathy_audio_sink_parent_class)->dispose) G_OBJECT_CLASS (empathy_audio_sink_parent_class)->dispose (object);