summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2001-01-08 22:08:40 +0000
committerWim Taymans <wim.taymans@gmail.com>2001-01-08 22:08:40 +0000
commit2a4a536fee807e8b5b0ed919163c9d23f8c7229e (patch)
tree17f684234f67344734d283fb04a923d6c25b51fb /gst
parent7291b0f7e826cb284b700e8a786b0e0eb4113998 (diff)
Manual updates. fixes to gstxml.c gst_xml_get_element was broken
Original commit message from CVS: Manual updates. fixes to gstxml.c gst_xml_get_element was broken
Diffstat (limited to 'gst')
-rw-r--r--gst/gstxml.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/gst/gstxml.c b/gst/gstxml.c
index 99afd25702..f72552a670 100644
--- a/gst/gstxml.c
+++ b/gst/gstxml.c
@@ -23,6 +23,7 @@
#include "gst_private.h"
#include "gstxml.h"
+#include "gstbin.h"
static void gst_xml_class_init (GstXMLClass *klass);
@@ -175,13 +176,30 @@ GstElement*
gst_xml_get_element (GstXML *xml, const guchar *name)
{
GstElement *element;
+ GList *topelements;
g_return_val_if_fail(xml != NULL, NULL);
g_return_val_if_fail(name != NULL, NULL);
GST_DEBUG (0,"gstxml: getting element \"%s\"\n", name);
- element = g_hash_table_lookup(xml->elements, name);
+ topelements = gst_xml_get_topelements (xml);
- return element;
+ while (topelements) {
+ GstElement *top = GST_ELEMENT (topelements->data);
+
+ if (!strcmp (gst_element_get_name (top), name)) {
+ return top;
+ }
+ else {
+ if (GST_IS_BIN (top)) {
+ element = gst_bin_get_by_name (GST_BIN (top), name);
+
+ if (element)
+ return element;
+ }
+ }
+ topelements = g_list_next (topelements);
+ }
+ return NULL;
}