gst/gstinfo.c: Make GST_PTR_FORMAT print messages as well.
authorTim-Philipp Müller <tim@centricular.net>
Mon, 14 Aug 2006 17:29:31 +0000 (17:29 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Mon, 14 Aug 2006 17:29:31 +0000 (17:29 +0000)
Original commit message from CVS:
* gst/gstinfo.c: (gst_debug_print_object):
Make GST_PTR_FORMAT print messages as well.
* tests/check/gst/gstinfo.c: (printf_extension_log_func),
(GST_START_TEST), (gst_info_suite):
More tests.

ChangeLog
gst/gstinfo.c
tests/check/gst/gstinfo.c

index 2aef909..5b367bf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2006-08-14  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst/gstinfo.c: (gst_debug_print_object):
+         Make GST_PTR_FORMAT print messages as well.
+
+       * tests/check/gst/gstinfo.c: (printf_extension_log_func),
+       (GST_START_TEST), (gst_info_suite):
+         More tests.
+
 2006-08-14  Edward Hervey  <edward@fluendo.com>
 
        * gst/gstelementfactory.c: (gst_element_register):
index 689aa3d..b826895 100644 (file)
@@ -491,6 +491,22 @@ gst_debug_print_object (gpointer ptr)
   if (G_IS_OBJECT (object)) {
     return g_strdup_printf ("<%s@%p>", G_OBJECT_TYPE_NAME (object), object);
   }
+  if (GST_IS_MESSAGE (object)) {
+    GstMessage *msg = GST_MESSAGE_CAST (object);
+    gchar *s, *ret;
+
+    if (msg->structure) {
+      s = gst_structure_to_string (msg->structure);
+    } else {
+      s = g_strdup ("(NULL)");
+    }
+
+    ret = g_strdup_printf ("%s message from element '%s': %s",
+        GST_MESSAGE_TYPE_NAME (msg), (msg->src != NULL) ?
+        GST_ELEMENT_NAME (msg->src) : "(NULL)", s);
+    g_free (s);
+    return ret;
+  }
 
   return g_strdup_printf ("%p", ptr);
 }
index 45219b9..c749718 100644 (file)
@@ -23,7 +23,7 @@
 #include <gst/check/gstcheck.h>
 
 static void
-segment_printf_extension_log_func (GstDebugCategory * category,
+printf_extension_log_func (GstDebugCategory * category,
     GstDebugLevel level, const gchar * file, const gchar * function,
     gint line, GObject * object, GstDebugMessage * message, gpointer unused)
 {
@@ -41,13 +41,81 @@ segment_printf_extension_log_func (GstDebugCategory * category,
   }
 }
 
+/* check our GST_PTR_FORMAT printf extension stuff */
+GST_START_TEST (info_ptr_format_printf_extension)
+{
+  /* set up our own log function to make sure the code in gstinfo is actually
+   * executed without GST_DEBUG being set or it being output to stdout */
+  gst_debug_remove_log_function (gst_debug_log_default);
+  gst_debug_add_log_function (printf_extension_log_func, NULL);
+
+  gst_debug_set_default_threshold (GST_LEVEL_LOG);
+
+  /* NULL object */
+  GST_LOG ("NULL: %" GST_PTR_FORMAT, NULL);
+
+  /* structure */
+  {
+    GstStructure *s;
+
+    s = gst_structure_new ("foo/bar", "number", G_TYPE_INT, 1,
+        "string", G_TYPE_STRING, "s", "float-number", G_TYPE_DOUBLE,
+        (gdouble) 424242.42, NULL);
+
+    GST_LOG ("STRUCTURE: %" GST_PTR_FORMAT, s);
+    gst_structure_free (s);
+  }
+
+  /* message */
+  {
+    GstMessage *msg;
+
+    msg = gst_message_new_element (NULL,
+        gst_structure_new ("redirect", "new-location", G_TYPE_STRING,
+            "http://foobar.com/r0x0r.ogg", "minimum-bitrate", G_TYPE_INT,
+            56000, NULL));
+
+    GST_LOG ("MESSAGE: %" GST_PTR_FORMAT, msg);
+    gst_message_unref (msg);
+  }
+
+#if 0
+  /* TODO: GObject */
+  {
+    GST_LOG ("GOBJECT: %" GST_PTR_FORMAT, obj);
+  }
+
+  /* TODO: GstObject */
+  {
+    GST_LOG ("GSTOBJECT: %" GST_PTR_FORMAT, obj);
+  }
+
+  /* TODO: GstPad */
+  {
+    GST_LOG ("PAD: %" GST_PTR_FORMAT, pad);
+  }
+
+  /* TODO: GstCaps */
+  {
+    GST_LOG ("PAD: %" GST_PTR_FORMAT, pad);
+  }
+#endif
+
+  /* clean up */
+  gst_debug_set_default_threshold (GST_LEVEL_NONE);
+  gst_debug_add_log_function (gst_debug_log_default, NULL);
+  gst_debug_remove_log_function (printf_extension_log_func);
+}
+
+GST_END_TEST;
+
 /* check our GST_SEGMENT_FORMAT printf extension stuff */
 GST_START_TEST (info_segment_format_printf_extension)
 {
   /* set up our own log function to make sure the code in gstinfo is actually
    * executed without GST_DEBUG being set or it being output to stdout */
   gst_debug_remove_log_function (gst_debug_log_default);
-  gst_debug_add_log_function (segment_printf_extension_log_func, NULL);
+  gst_debug_add_log_function (printf_extension_log_func, NULL);
 
   gst_debug_set_default_threshold (GST_LEVEL_LOG);
 
@@ -105,7 +173,7 @@ GST_START_TEST (info_segment_format_printf_extension)
   /* clean up */
   gst_debug_set_default_threshold (GST_LEVEL_NONE);
   gst_debug_add_log_function (gst_debug_log_default, NULL);
-  gst_debug_remove_log_function (segment_printf_extension_log_func);
+  gst_debug_remove_log_function (printf_extension_log_func);
 }
 
 GST_END_TEST;
@@ -120,6 +188,7 @@ gst_info_suite (void)
 
   suite_add_tcase (s, tc_chain);
   tcase_add_test (tc_chain, info_segment_format_printf_extension);
+  tcase_add_test (tc_chain, info_ptr_format_printf_extension);
 
   return s;
 }