From: Tim-Philipp Müller Date: Tue, 6 Feb 2007 15:56:14 +0000 (+0000) Subject: ext/gconf/: In gconfaudiosink, get the right key as the old key in do_toggle (ie... X-Git-Tag: RELEASE-0_10_6~338 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=881308d5c58f0b4c8a5cd3b32f924c03af12ee0d;p=platform%2Fupstream%2Fgst-plugins-good.git ext/gconf/: In gconfaudiosink, get the right key as the old key in do_toggle (ie. one dependent on the profile select... Original commit message from CVS: * ext/gconf/gconf.c: (gst_gconf_get_key_for_sink_profile), (gst_gconf_render_bin_from_key), (gst_gconf_get_default_audio_sink): * ext/gconf/gconf.h: * ext/gconf/gstgconfaudiosink.c: (get_gconf_key_for_profile), (do_toggle_element), (gst_gconf_audio_sink_set_property), (gst_gconf_audio_sink_get_property): In gconfaudiosink, get the right key as the old key in do_toggle (ie. one dependent on the profile selected). Log some more stuff so we can see what's actually going on. --- diff --git a/ChangeLog b/ChangeLog index 29bda0688..bf5d9ad59 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2007-02-06 Tim-Philipp Müller + + * ext/gconf/gconf.c: (gst_gconf_get_key_for_sink_profile), + (gst_gconf_render_bin_from_key), + (gst_gconf_get_default_audio_sink): + * ext/gconf/gconf.h: + * ext/gconf/gstgconfaudiosink.c: (get_gconf_key_for_profile), + (do_toggle_element), (gst_gconf_audio_sink_set_property), + (gst_gconf_audio_sink_get_property): + In gconfaudiosink, get the right key as the old key in do_toggle + (ie. one dependent on the profile selected). Log some more stuff so + we can see what's actually going on. + 2007-02-06 Sebastian Dröge * gst/audiofx/audioamplify.c: (gst_audio_amplify_base_init), diff --git a/ext/gconf/gconf.c b/ext/gconf/gconf.c index c5c05d00b..690e6d4bc 100644 --- a/ext/gconf/gconf.c +++ b/ext/gconf/gconf.c @@ -27,6 +27,7 @@ #endif #include "gconf.h" +#include "gstgconfelements.h" /* for debug category */ #ifndef GST_GCONF_DIR #error "GST_GCONF_DIR is not defined !" @@ -77,6 +78,23 @@ gst_gconf_get_string (const gchar * key) return value; } +const gchar * +gst_gconf_get_key_for_sink_profile (guint profile) +{ + switch (profile) { + case GCONF_PROFILE_SOUNDS: + return GST_GCONF_AUDIOSINK_KEY; + case GCONF_PROFILE_MUSIC: + return GST_GCONF_MUSIC_AUDIOSINK_KEY; + case GCONF_PROFILE_CHAT: + return GST_GCONF_CHAT_AUDIOSINK_KEY; + default: + break; + } + + g_return_val_if_reached (GST_GCONF_AUDIOSINK_KEY); +} + /** * gst_gconf_set_string: * @key: a #gchar corresponding to the key you want to set. @@ -113,6 +131,9 @@ gst_gconf_render_bin_from_key (const gchar * key) gchar *value; value = gst_gconf_get_string (key); + + GST_LOG ("%s = %s", GST_STR_NULL (key), GST_STR_NULL (value)); + if (value) { GError *err = NULL; @@ -142,27 +163,10 @@ GstElement * gst_gconf_get_default_audio_sink (int profile) { GstElement *ret; - gchar *key; - const gchar *profile_string; - - switch (profile) { - case GCONF_PROFILE_SOUNDS: - profile_string = ""; - break; - case GCONF_PROFILE_MUSIC: - profile_string = "music"; - break; - case GCONF_PROFILE_CHAT: - profile_string = "chat"; - break; - default: - g_return_val_if_reached (NULL); - } - - key = g_strdup_printf ("default/%saudiosink", profile_string); + const gchar *key; + key = gst_gconf_get_key_for_sink_profile (profile); ret = gst_gconf_render_bin_from_key (key); - g_free (key); if (!ret) { ret = gst_element_factory_make (DEFAULT_AUDIOSINK, NULL); diff --git a/ext/gconf/gconf.h b/ext/gconf/gconf.h index 3a747d5ad..ca8029695 100644 --- a/ext/gconf/gconf.h +++ b/ext/gconf/gconf.h @@ -30,10 +30,12 @@ G_BEGIN_DECLS -#define GST_GCONF_AUDIOSRC_KEY "default/audiosrc" -#define GST_GCONF_AUDIOSINK_KEY "default/audiosink" -#define GST_GCONF_VIDEOSRC_KEY "default/videosrc" -#define GST_GCONF_VIDEOSINK_KEY "default/videosink" +#define GST_GCONF_AUDIOSRC_KEY "default/audiosrc" +#define GST_GCONF_AUDIOSINK_KEY "default/audiosink" +#define GST_GCONF_MUSIC_AUDIOSINK_KEY "default/musicaudiosink" +#define GST_GCONF_CHAT_AUDIOSINK_KEY "default/chataudiosink" +#define GST_GCONF_VIDEOSRC_KEY "default/videosrc" +#define GST_GCONF_VIDEOSINK_KEY "default/videosink" enum { @@ -46,6 +48,8 @@ gchar * gst_gconf_get_string (const gchar *key); void gst_gconf_set_string (const gchar *key, const gchar *value); +const gchar * gst_gconf_get_key_for_sink_profile (guint profile); + GstElement * gst_gconf_render_bin_from_key (const gchar *key); GstElement * gst_gconf_get_default_video_sink (void); diff --git a/ext/gconf/gstgconfaudiosink.c b/ext/gconf/gstgconfaudiosink.c index 77297af65..375c2ede1 100644 --- a/ext/gconf/gstgconfaudiosink.c +++ b/ext/gconf/gstgconfaudiosink.c @@ -136,11 +136,11 @@ get_gconf_key_for_profile (int profile) { switch (profile) { case GCONF_PROFILE_SOUNDS: - return GST_GCONF_DIR "/default/audiosink"; + return GST_GCONF_DIR GST_GCONF_AUDIOSINK_KEY; case GCONF_PROFILE_MUSIC: - return GST_GCONF_DIR "/default/musicaudiosink"; + return GST_GCONF_DIR GST_GCONF_MUSIC_AUDIOSINK_KEY; case GCONF_PROFILE_CHAT: - return GST_GCONF_DIR "/default/chataudiosink"; + return GST_GCONF_DIR GST_GCONF_CHAT_AUDIOSINK_KEY; default: g_return_val_if_reached (NULL); } @@ -189,11 +189,17 @@ gst_gconf_audio_sink_dispose (GObject * object) static gboolean do_toggle_element (GstGConfAudioSink * sink) { + const gchar *key; GstPad *targetpad; gchar *new_gconf_str; GstState cur, next; - new_gconf_str = gst_gconf_get_string (GST_GCONF_AUDIOSINK_KEY); + key = gst_gconf_get_key_for_sink_profile (sink->profile); + new_gconf_str = gst_gconf_get_string (key); + + GST_LOG_OBJECT (sink, "old gconf string: %s", GST_STR_NULL (sink->gconf_str)); + GST_LOG_OBJECT (sink, "new gconf string: %s", GST_STR_NULL (new_gconf_str)); + if (new_gconf_str != NULL && sink->gconf_str != NULL && (strlen (new_gconf_str) == 0 || strcmp (sink->gconf_str, new_gconf_str) == 0)) { @@ -257,8 +263,6 @@ gst_gconf_audio_sink_set_property (GObject * object, guint prop_id, { GstGConfAudioSink *sink; - g_return_if_fail (GST_IS_GCONF_AUDIO_SINK (object)); - sink = GST_GCONF_AUDIO_SINK (object); switch (prop_id) { @@ -282,8 +286,6 @@ gst_gconf_audio_sink_get_property (GObject * object, guint prop_id, { GstGConfAudioSink *sink; - g_return_if_fail (GST_IS_GCONF_AUDIO_SINK (object)); - sink = GST_GCONF_AUDIO_SINK (object); switch (prop_id) {