don't mix tabs and spaces
[platform/upstream/gstreamer.git] / examples / xml / runxml.c
index 9bc756f..698ea67 100644 (file)
@@ -1,45 +1,61 @@
+#include <string.h>
 #include <stdlib.h>
 #include <gst/gst.h>
 
 gboolean playing;
 
-static void
-xml_loaded (GstXML *xml, GstObject *object, gpointer data)
+G_GNUC_UNUSED static void
+xml_loaded (GstXML * xml, GstObject * object, xmlNodePtr self, gpointer data)
 {
-  if (GST_IS_PAD (object)) {
-    g_print ("pad loaded '%s'\n", gst_pad_get_name (GST_PAD (object)));
-  }
-  else if (GST_IS_ELEMENT (object)) {
-    g_print ("element loaded '%s'\n", gst_element_get_name (GST_ELEMENT (object)));
+  xmlNodePtr children = self->xmlChildrenNode;
+
+  while (children) {
+    if (!strcmp (children->name, "comment")) {
+      xmlNodePtr nodes = children->xmlChildrenNode;
+
+      while (nodes) {
+        if (!strcmp (nodes->name, "text")) {
+          gchar *name = g_strdup (xmlNodeGetContent (nodes));
+
+          g_print ("object %s loaded with comment '%s'\n",
+              gst_object_get_name (object), name);
+        }
+        nodes = nodes->next;
+      }
+    }
+    children = children->next;
   }
 }
 
-int main(int argc,char *argv[])
+int
+main (int argc, char *argv[])
 {
   GstXML *xml;
-  GstElement *bin;
+  GstElement *pipeline;
   gboolean ret;
 
-  gst_init(&argc,&argv);
+  gst_init (&argc, &argv);
 
   xml = gst_xml_new ();
 
-  gtk_signal_connect (GTK_OBJECT (xml), "object_loaded", xml_loaded, NULL);
+/*  g_signal_connect (G_OBJECT (xml), "object_loaded", */
+/*                 G_CALLBACK (xml_loaded), xml); */
 
-  ret = gst_xml_parse_file(xml, "xmlTest.gst", NULL);
-  g_assert (ret == TRUE);
+  if (argc == 2)
+    ret = gst_xml_parse_file (xml, argv[1], NULL);
+  else
+    ret = gst_xml_parse_file (xml, "xmlTest.gst", NULL);
 
-  bin = gst_xml_get_element(xml, "bin");
-  g_assert (bin != NULL);
+  g_assert (ret == TRUE);
 
-  gst_element_set_state(bin, GST_STATE_PLAYING);
+  pipeline = gst_xml_get_element (xml, "pipeline");
+  g_assert (pipeline != NULL);
 
-  playing = TRUE;
+  gst_element_set_state (pipeline, GST_STATE_PLAYING);
 
-  while (gst_bin_iterate(GST_BIN(bin)));
+  while (gst_bin_iterate (GST_BIN (pipeline)));
 
-  gst_element_set_state(bin, GST_STATE_NULL);
+  gst_element_set_state (pipeline, GST_STATE_NULL);
 
-  exit(0);
+  exit (0);
 }
-