pad: add debug helper for GstPadLinkReturn names
authorStefan Sauer <ensonic@users.sf.net>
Tue, 11 Mar 2014 20:46:14 +0000 (21:46 +0100)
committerStefan Sauer <ensonic@users.sf.net>
Tue, 11 Mar 2014 20:50:36 +0000 (21:50 +0100)
Add a helper like gst_flow_get_name() for GstPadLinkReturn. Use this in core.
API: gst_pad_link_get_name()

docs/gst/gstreamer-sections.txt
gst/gstghostpad.c
gst/gstpad.c
gst/gstpad.h
win32/common/libgstreamer.def

index 18bf459..814894b 100644 (file)
@@ -1735,6 +1735,7 @@ GstPad
 GstPadDirection
 GstPadFlags
 GstPadLinkReturn
+gst_pad_link_get_name
 GST_PAD_LINK_FAILED
 GST_PAD_LINK_SUCCESSFUL
 GstPadLinkCheck
index f6952cb..c05be81 100644 (file)
@@ -869,8 +869,8 @@ gst_ghost_pad_set_target (GstGhostPad * gpad, GstPad * newtarget)
   /* ERRORS */
 link_failed:
   {
-    GST_WARNING_OBJECT (gpad, "could not link internal and target, reason:%d",
-        lret);
+    GST_WARNING_OBJECT (gpad, "could not link internal and target, reason:%s",
+        gst_pad_link_get_name (lret));
     return FALSE;
   }
 }
index 79212d3..2fe1bdf 100644 (file)
@@ -251,6 +251,27 @@ gst_flow_to_quark (GstFlowReturn ret)
   return 0;
 }
 
+/**
+ * gst_pad_link_get_name:
+ * @ret: a #GstPadLinkReturn to get the name of.
+ *
+ * Gets a string representing the given pad-link return.
+ *
+ * Returns: a static string with the name of the pad-link return.
+ *
+ * Since: 1.3.1
+ */
+const gchar *
+gst_pad_link_get_name (GstPadLinkReturn ret)
+{
+  static const gchar *names[(-(GST_PAD_LINK_REFUSED)) + 1] = {
+    "ok", "wrong hierarchy", "was linked", "wrong direction", "no format",
+    "incompatible scheduling", "refused"
+  };
+  ret = CLAMP (ret, GST_PAD_LINK_REFUSED, GST_PAD_LINK_OK);
+  return names[-ret];
+}
+
 #define _do_init \
 { \
   gint i; \
@@ -2352,8 +2373,9 @@ concurrent_link:
   }
 link_failed:
   {
-    GST_CAT_INFO (GST_CAT_PADS, "link between %s:%s and %s:%s failed",
-        GST_DEBUG_PAD_NAME (srcpad), GST_DEBUG_PAD_NAME (sinkpad));
+    GST_CAT_INFO (GST_CAT_PADS, "link between %s:%s and %s:%s failed: %s",
+        GST_DEBUG_PAD_NAME (srcpad), GST_DEBUG_PAD_NAME (sinkpad),
+        gst_pad_link_get_name (result));
 
     GST_PAD_PEER (srcpad) = NULL;
     GST_PAD_PEER (sinkpad) = NULL;
index 140ed97..f84d0f4 100644 (file)
@@ -179,8 +179,9 @@ typedef enum {
   GST_FLOW_CUSTOM_ERROR_2 = -102
 } GstFlowReturn;
 
-const gchar*           gst_flow_get_name       (GstFlowReturn ret);
-GQuark                 gst_flow_to_quark       (GstFlowReturn ret);
+const gchar*           gst_flow_get_name (GstFlowReturn ret);
+GQuark                           gst_flow_to_quark (GstFlowReturn ret);
+const gchar*          gst_pad_link_get_name (GstPadLinkReturn ret);
 
 /**
  * GstPadLinkCheck:
index 059a945..666fec4 100644 (file)
@@ -752,6 +752,7 @@ EXPORTS
        gst_pad_iterate_internal_links_default
        gst_pad_link
        gst_pad_link_check_get_type
+       gst_pad_link_get_name
        gst_pad_link_full
        gst_pad_link_return_get_type
        gst_pad_mark_reconfigure