Use new functions from core to render a bin from a string. Fixes build. Up requiremen...
authorTim-Philipp Müller <tim@centricular.net>
Thu, 2 Feb 2006 10:47:15 +0000 (10:47 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Thu, 2 Feb 2006 10:47:15 +0000 (10:47 +0000)
Original commit message from CVS:
* configure.ac:
* ext/gconf/gconf.c: (gst_gconf_render_bin_from_key):
Use new functions from core to render a bin from a
string. Fixes build. Up requirements to core CVS.

ChangeLog
common
configure.ac
ext/gconf/gconf.c

index 150b13d..fc4e0ce 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-02-02  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * configure.ac:
+       * ext/gconf/gconf.c: (gst_gconf_render_bin_from_key):
+         Use new functions from core to render a bin from a
+         string. Fixes build. Up requirements to core CVS.
+
 2006-02-01  Tim-Philipp Müller  <tim at centricular dot net>
 
        * gst/auparse/gstauparse.c: (gst_au_parse_chain):
diff --git a/common b/common
index 0b93085..1140eab 160000 (submodule)
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit 0b93085188e83fe678ec5ded2823cd7c24dfa843
+Subproject commit 1140eabed84dd1d8d6df7df88f5c8bdf20a8faa1
index 3269062..f2cce8c 100644 (file)
@@ -36,7 +36,7 @@ AS_LIBTOOL_TAGS
 AM_PROG_LIBTOOL
 
 dnl *** required versions of GStreamer stuff ***
-GST_REQ=0.10.2
+GST_REQ=0.10.2.1
 GSTPB_REQ=0.10.2
 
 dnl *** autotools stuff ****
index 5ea8ece..e07b06a 100644 (file)
@@ -45,47 +45,6 @@ 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 */
-static GstPad *
-gst_bin_find_unconnected_pad (GstBin * bin, GstPadDirection direction)
-{
-  GstPad *pad = NULL;
-  GList *elements = NULL;
-  const GList *pads = NULL;
-  GstElement *element = NULL;
-
-  GST_OBJECT_LOCK (bin);
-  elements = bin->children;
-  /* traverse all elements looking for unconnected pads */
-  while (elements && pad == NULL) {
-    element = GST_ELEMENT (elements->data);
-    GST_OBJECT_LOCK (element);
-    pads = element->pads;
-    while (pads) {
-      GstPad *testpad = GST_PAD (pads->data);
-
-      /* check if the direction matches */
-      if (GST_PAD_DIRECTION (testpad) == direction) {
-        GST_OBJECT_LOCK (testpad);
-        if (GST_PAD_PEER (testpad) == NULL) {
-          GST_OBJECT_UNLOCK (testpad);
-          /* found it ! */
-          pad = testpad;
-          break;
-        }
-        GST_OBJECT_UNLOCK (testpad);
-      }
-      pads = g_list_next (pads);
-    }
-    GST_OBJECT_UNLOCK (element);
-    elements = g_list_next (elements);
-  }
-  GST_OBJECT_UNLOCK (bin);
-
-  return pad;
-}
-
 /* external functions */
 
 /**
@@ -139,43 +98,6 @@ gst_gconf_set_string (const gchar * key, const gchar * value)
 }
 
 /**
- * gst_gconf_render_bin_from_description:
- * @description: a #gchar string describing the bin.
- *
- * Render bin from description @description.
- *
- * Returns: a #GstElement containing the rendered bin.
- */
-GstElement *
-gst_gconf_render_bin_from_description (const gchar * description)
-{
-  GstElement *bin = NULL;
-  GstPad *pad = NULL;
-  GError *error = NULL;
-  gchar *desc = NULL;
-
-  /* parse the pipeline to a bin */
-  desc = g_strdup_printf ("bin.( %s )", description);
-  bin = GST_ELEMENT (gst_parse_launch (desc, &error));
-  g_free (desc);
-  if (error) {
-    GST_ERROR ("gstgconf: error parsing pipeline %s\n%s\n",
-        description, error->message);
-    g_error_free (error);
-    return NULL;
-  }
-
-  /* find pads and ghost them if necessary */
-  if ((pad = gst_bin_find_unconnected_pad (GST_BIN (bin), GST_PAD_SRC))) {
-    gst_element_add_pad (bin, gst_ghost_pad_new ("src", pad));
-  }
-  if ((pad = gst_bin_find_unconnected_pad (GST_BIN (bin), GST_PAD_SINK))) {
-    gst_element_add_pad (bin, gst_ghost_pad_new ("sink", pad));
-  }
-  return bin;
-}
-
-/**
  * gst_gconf_render_bin_from_key:
  * @key: a #gchar string corresponding to a GConf key.
  *
@@ -190,9 +112,17 @@ gst_gconf_render_bin_from_key (const gchar * key)
   gchar *value;
 
   value = gst_gconf_get_string (key);
-  if (value)
-    bin = gst_gconf_render_bin_from_description (value);
-  g_free (value);
+  if (value) {
+    GError *err = NULL;
+
+    bin = gst_parse_bin_from_description (value, TRUE, &err);
+    if (err) {
+      GST_ERROR ("gconf: error creating bin '%s': %s", value, err->message);
+      g_error_free (err);
+    }
+
+    g_free (value);
+  }
   return bin;
 }