diff options
author | Tim-Philipp Müller <tim@centricular.net> | 2007-02-06 15:56:14 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2007-02-06 15:56:14 +0000 |
commit | 881308d5c58f0b4c8a5cd3b32f924c03af12ee0d (patch) | |
tree | 6ad736e957a2aee18b733e6a181e3cbe9e9f46e9 /ext/gconf | |
parent | cdba2c4219705c69fffb7bc5c08bc1ffdd3a75b4 (diff) |
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.
Diffstat (limited to 'ext/gconf')
-rw-r--r-- | ext/gconf/gconf.c | 42 | ||||
-rw-r--r-- | ext/gconf/gconf.h | 12 | ||||
-rw-r--r-- | ext/gconf/gstgconfaudiosink.c | 18 |
3 files changed, 41 insertions, 31 deletions
diff --git a/ext/gconf/gconf.c b/ext/gconf/gconf.c index c5c05d00..690e6d4b 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 3a747d5a..ca802969 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 77297af6..375c2ede 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) { |