don't mix tabs and spaces
[platform/upstream/gstreamer.git] / examples / xml / runxml.c
index 38b5219..698ea67 100644 (file)
@@ -1,38 +1,61 @@
+#include <string.h>
+#include <stdlib.h>
 #include <gst/gst.h>
 
 gboolean playing;
 
-/* eos will be called when the src element has an end of stream */
-void eos(GstSrc *src, gpointer data)
+G_GNUC_UNUSED static void
+xml_loaded (GstXML * xml, GstObject * object, xmlNodePtr self, gpointer data)
 {
-  g_print("have eos, quitting\n");
-
-  playing = FALSE;
+  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 *disk;
+  GstElement *pipeline;
+  gboolean ret;
 
-  gst_init(&argc,&argv);
+  gst_init (&argc, &argv);
 
-  xml = gst_xml_new("xmlTest.gst", NULL);
+  xml = gst_xml_new ();
 
-  bin = gst_xml_get_element(xml, "bin");
-  
-  gst_element_set_state(bin, GST_STATE_READY);
-  gst_element_set_state(bin, GST_STATE_PLAYING);
+/*  g_signal_connect (G_OBJECT (xml), "object_loaded", */
+/*                 G_CALLBACK (xml_loaded), xml); */
 
-  playing = TRUE;
+  if (argc == 2)
+    ret = gst_xml_parse_file (xml, argv[1], NULL);
+  else
+    ret = gst_xml_parse_file (xml, "xmlTest.gst", NULL);
 
-  while (playing) {
-    gst_bin_iterate(GST_BIN(bin));
-  }
+  g_assert (ret == TRUE);
 
-  gst_element_set_state(bin, GST_STATE_NULL);
+  pipeline = gst_xml_get_element (xml, "pipeline");
+  g_assert (pipeline != NULL);
 
-  exit(0);
-}
+  gst_element_set_state (pipeline, GST_STATE_PLAYING);
 
+  while (gst_bin_iterate (GST_BIN (pipeline)));
+
+  gst_element_set_state (pipeline, GST_STATE_NULL);
+
+  exit (0);
+}