added functions gst_gconf_get_default_{audio,video}_sink -- this is so the defaults...
authorAndy Wingo <wingo@pobox.com>
Wed, 16 Oct 2002 19:47:05 +0000 (19:47 +0000)
committerAndy Wingo <wingo@pobox.com>
Wed, 16 Oct 2002 19:47:05 +0000 (19:47 +0000)
Original commit message from CVS:
added functions gst_gconf_get_default_{audio,video}_sink -- this is so the
defaults library (gstgconf) can be used by applications with uninstalled gstreamer
(ie, no gconf keys). More specifically, these functions enable the player to
work uninstalled, which is a good thing (tm).

gst-libs/gst/gconf/gconf.c
gst-libs/gst/gconf/gconf.h

index 3da2c310a76f836906ea754391bb84321ebce891..f14a0a6c7e89281a33f278d12732d772b7877a78 100644 (file)
@@ -11,7 +11,7 @@ static GConfClient *_gst_gconf_client = NULL; /* GConf connection */
 
 /* internal functions */
 
-GConfClient *
+static GConfClient *
 gst_gconf_get_client (void)
 {
   if (!_gst_gconf_client)
@@ -19,9 +19,10 @@ gst_gconf_get_client (void)
 
   return _gst_gconf_client;
 }
+
 /* go through a bin, finding the one pad that is unconnected in the given
  *  * direction, and return that pad */
-GstPad *
+static GstPad *
 gst_bin_find_unconnected_pad (GstBin *bin, GstPadDirection direction)
 {
   GstPad *pad = NULL;
@@ -117,11 +118,12 @@ gst_gconf_render_bin_from_description (const gchar *description)
 GstElement *
 gst_gconf_render_bin_from_key (const gchar *key)
 {
-  GstElement *bin;
+  GstElement *bin = NULL;
   gchar *value;
   
   value = gst_gconf_get_string (key);
-  bin = gst_gconf_render_bin_from_description (value);
+  if (value)
+    bin = gst_gconf_render_bin_from_description (value);
   return bin;
 }
 
@@ -131,6 +133,40 @@ guint              gst_gconf_notify_add            (const gchar *key,
                                                 gpointer user_data);
 */
 
+GstElement *
+gst_gconf_get_default_audio_sink (void)
+{
+  GstElement *ret = gst_gconf_render_bin_from_key ("default/audiosink");
+  
+  if (!ret) {
+    ret = gst_element_factory_make ("osssink", NULL);
+  
+    if (!ret)
+      g_warning ("No GConf default audio sink key and osssink doesn't work");
+    else
+      g_warning ("GConf audio sink not found, using osssink");
+  }
+
+  return ret;
+}
+
+GstElement *
+gst_gconf_get_default_video_sink (void)
+{
+  GstElement *ret = gst_gconf_render_bin_from_key ("default/videosink");
+  
+  if (!ret) {
+    ret = gst_element_factory_make ("xvideosink", NULL);
+  
+    if (!ret)
+      g_warning ("No GConf default video sink key and xvideosink doesn't work");
+    else
+      g_warning ("GConf video sink not found, using xvideosink");
+  }
+
+  return ret;
+}
+
 static gboolean
 plugin_init (GModule *module, GstPlugin *plugin)
 {
index a054dc3e85cd64ca67a75cf074b72fde09e99d3b..c1ed9d420795a393a3b3c5164d16b1ea1ea7805b 100644 (file)
@@ -15,6 +15,9 @@ void          gst_gconf_set_string            (const gchar *key,
 GstElement *   gst_gconf_render_bin_from_key           (const gchar *key);
 GstElement *   gst_gconf_render_bin_from_description   (const gchar *description);
 
+GstElement *   gst_gconf_get_default_video_sink (void);
+GstElement *   gst_gconf_get_default_audio_sink (void);
+
 /*
 guint          gst_gconf_notify_add            (const gchar *key,
                                                 GConfClientNotifyFunc func,