ext/gconf/: In gconfaudiosink, get the right key as the old key in do_toggle (ie...
authorTim-Philipp Müller <tim@centricular.net>
Tue, 6 Feb 2007 15:56:14 +0000 (15:56 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Tue, 6 Feb 2007 15:56:14 +0000 (15:56 +0000)
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.

ChangeLog
ext/gconf/gconf.c
ext/gconf/gconf.h
ext/gconf/gstgconfaudiosink.c

index 29bda06885f6bb88f441080a40c28109be083fab..bf5d9ad59627fc55feeb2b82b3deb0d15578adf0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2007-02-06  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * 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  <slomo@circular-chaos.org>
 
        * gst/audiofx/audioamplify.c: (gst_audio_amplify_base_init),
index c5c05d00be7b2201dd67e10d1e8fdf61eb2ddb6e..690e6d4bc5a200190ca67e33e18533b6e7d1abc9 100644 (file)
@@ -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);
index 3a747d5ade8f4f3b805a01b014c33c3a372b4570..ca80296958968db4e220a9b569b9d0b382506d66 100644 (file)
 
 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);
index 77297af6553b4190a4cd7761503a0f27e518be6c..375c2ede1d50a495e889b0a13f7aefb497f6d8eb 100644 (file)
@@ -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) {