fixing up tests to work with property callbacks
authorThomas Vander Stichele <thomas@apestaart.org>
Tue, 12 Feb 2002 13:51:40 +0000 (13:51 +0000)
committerThomas Vander Stichele <thomas@apestaart.org>
Tue, 12 Feb 2002 13:51:40 +0000 (13:51 +0000)
Original commit message from CVS:
fixing up tests to work with property callbacks

tests/old/testsuite/elements/Makefile.am
tests/old/testsuite/elements/property.h [new file with mode: 0644]
tests/old/testsuite/elements/tee.c
testsuite/elements/Makefile.am
testsuite/elements/property.h [new file with mode: 0644]
testsuite/elements/tee.c

index eb85235..4d1adc8 100644 (file)
@@ -4,7 +4,7 @@ TESTS = $(testprogs)
 
 check_PROGRAMS = $(testprogs)
 
-EXTRA_DIST = events.h
+EXTRA_DIST = property.h
 LDADD = $(GST_LIBS) 
 CFLAGS = $(GST_CFLAGS)
 
diff --git a/tests/old/testsuite/elements/property.h b/tests/old/testsuite/elements/property.h
new file mode 100644 (file)
index 0000000..a1756f1
--- /dev/null
@@ -0,0 +1,23 @@
+/* extracted from gst-launch */
+static void
+property_change_callback (GObject *object, GstObject *orig, GParamSpec *pspec)
+{
+  GValue value = { 0, }; /* the important thing is that value.type = 0 */
+  gchar *str = 0;
+
+  if (pspec->flags & G_PARAM_READABLE) {
+    g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE (pspec));
+    g_object_get_property (G_OBJECT (orig), pspec->name, &value);
+    /* fix current bug with g_strdup_value_contents not working with gint64 */
+    if (G_IS_PARAM_SPEC_INT64 (pspec))
+      str = g_strdup_printf ("%lld", g_value_get_int64 (&value));
+    else
+      str = g_strdup_value_contents (&value);
+    g_print ("%s: %s = %s\n", GST_OBJECT_NAME (orig), pspec->name, str);
+    g_free (str);
+    g_value_unset(&value);
+  } else {
+    g_warning ("Parameter not readable. What's up with that?");
+  }
+}
+
index b95e5a7..0f35303 100644 (file)
@@ -13,6 +13,7 @@
  */
 
 #include <gst/gst.h>
+#include <property.h>
 
 GstElement *
 element_create (char *name, char *element)
@@ -52,6 +53,9 @@ main (int argc, char *argv[])
   g_print ("Creating pipeline\n");
   pipeline = gst_pipeline_new ("pipeline");
 
+  g_print ("Connecting signals to pipeline\n");
+  g_signal_connect (pipeline, "deep_notify", G_CALLBACK (property_change_callback), NULL);
+    
   g_print ("Creating elements\n");
   if (!(tee = element_create ("tee", "tee"))) return 1;
   if (!(src = element_create ("src", "fakesrc"))) return 1;
index eb85235..4d1adc8 100644 (file)
@@ -4,7 +4,7 @@ TESTS = $(testprogs)
 
 check_PROGRAMS = $(testprogs)
 
-EXTRA_DIST = events.h
+EXTRA_DIST = property.h
 LDADD = $(GST_LIBS) 
 CFLAGS = $(GST_CFLAGS)
 
diff --git a/testsuite/elements/property.h b/testsuite/elements/property.h
new file mode 100644 (file)
index 0000000..a1756f1
--- /dev/null
@@ -0,0 +1,23 @@
+/* extracted from gst-launch */
+static void
+property_change_callback (GObject *object, GstObject *orig, GParamSpec *pspec)
+{
+  GValue value = { 0, }; /* the important thing is that value.type = 0 */
+  gchar *str = 0;
+
+  if (pspec->flags & G_PARAM_READABLE) {
+    g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE (pspec));
+    g_object_get_property (G_OBJECT (orig), pspec->name, &value);
+    /* fix current bug with g_strdup_value_contents not working with gint64 */
+    if (G_IS_PARAM_SPEC_INT64 (pspec))
+      str = g_strdup_printf ("%lld", g_value_get_int64 (&value));
+    else
+      str = g_strdup_value_contents (&value);
+    g_print ("%s: %s = %s\n", GST_OBJECT_NAME (orig), pspec->name, str);
+    g_free (str);
+    g_value_unset(&value);
+  } else {
+    g_warning ("Parameter not readable. What's up with that?");
+  }
+}
+
index b95e5a7..0f35303 100644 (file)
@@ -13,6 +13,7 @@
  */
 
 #include <gst/gst.h>
+#include <property.h>
 
 GstElement *
 element_create (char *name, char *element)
@@ -52,6 +53,9 @@ main (int argc, char *argv[])
   g_print ("Creating pipeline\n");
   pipeline = gst_pipeline_new ("pipeline");
 
+  g_print ("Connecting signals to pipeline\n");
+  g_signal_connect (pipeline, "deep_notify", G_CALLBACK (property_change_callback), NULL);
+    
   g_print ("Creating elements\n");
   if (!(tee = element_create ("tee", "tee"))) return 1;
   if (!(src = element_create ("src", "fakesrc"))) return 1;