diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2001-01-08 22:08:40 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2001-01-08 22:08:40 +0000 |
commit | 2a4a536fee807e8b5b0ed919163c9d23f8c7229e (patch) | |
tree | 17f684234f67344734d283fb04a923d6c25b51fb /gst | |
parent | 7291b0f7e826cb284b700e8a786b0e0eb4113998 (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.c | 22 |
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; } |