From 4062420223da21a7bf701b2c0a8df8755a506b02 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Thu, 2 Feb 2006 10:47:15 +0000 Subject: [PATCH] Use new functions from core to render a bin from a string. Fixes build. Up requirements to core CVS. 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 | 7 +++++ common | 2 +- configure.ac | 2 +- ext/gconf/gconf.c | 92 +++++++------------------------------------------------ 4 files changed, 20 insertions(+), 83 deletions(-) diff --git a/ChangeLog b/ChangeLog index 150b13d..fc4e0ce 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-02-02 Tim-Philipp Müller + + * 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 * gst/auparse/gstauparse.c: (gst_au_parse_chain): diff --git a/common b/common index 0b93085..1140eab 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 0b93085188e83fe678ec5ded2823cd7c24dfa843 +Subproject commit 1140eabed84dd1d8d6df7df88f5c8bdf20a8faa1 diff --git a/configure.ac b/configure.ac index 3269062..f2cce8c 100644 --- a/configure.ac +++ b/configure.ac @@ -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 **** diff --git a/ext/gconf/gconf.c b/ext/gconf/gconf.c index 5ea8ece..e07b06a 100644 --- a/ext/gconf/gconf.c +++ b/ext/gconf/gconf.c @@ -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; } -- 2.7.4