gsttaskpool: Do not block tasks while cleaning up the taskpool
[platform/upstream/gstreamer.git] / gst / gstdebugutils.c
index e78e53a..a13f548 100644 (file)
@@ -1,7 +1,7 @@
 /* GStreamer
  * Copyright (C) 2007 Stefan Kost <ensonic@users.sf.net>
  *
- * gstdebugutils.c: debugging and analysis utillities
+ * gstdebugutils.c: debugging and analysis utilities
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -21,7 +21,7 @@
 /* TODO:
  * edge [ constraint=false ];
  *   this creates strange graphs ("minlen=0" is better)
- * try puting src/sink ghostpads for each bin into invisible clusters
+ * try putting src/sink ghostpads for each bin into invisible clusters
  *
  * for more compact nodes, try
  * - changing node-shape from box into record
@@ -58,7 +58,7 @@ extern const gchar *priv_gst_dump_dot_dir;      /* NULL *//* set from gst.c */
 
 #define PARAM_MAX_LENGTH 80
 
-const gchar spaces[] = {
+static const gchar spaces[] = {
   "                                "    /* 32 */
       "                                "        /* 64 */
       "                                "        /* 96 */
@@ -150,8 +150,10 @@ debug_dump_get_object_params (GObject * object,
               break;
             }
           }
-          if (tmp == NULL)
+          if (tmp == NULL) {
+            g_value_unset (&value);
             continue;
+          }
         } else if (G_VALUE_HOLDS_FLAGS (&value)) {
           GFlagsClass *f_class = g_type_class_ref (G_VALUE_TYPE (&value));
           GFlagsValue *vals = f_class->values;
@@ -251,7 +253,7 @@ debug_dump_pad (GstPad * pad, const gchar * color_name,
   param_name =
       debug_dump_get_object_params (G_OBJECT (pad), details, ignore_propnames);
   if (details & GST_DEBUG_GRAPH_SHOW_STATES) {
-    gchar pad_flags[4];
+    gchar pad_flags[5];
     const gchar *activation_mode = "-><";
     const gchar *task_mode = "";
     GstTask *task;
@@ -280,7 +282,8 @@ debug_dump_pad (GstPad * pad, const gchar * color_name,
         GST_OBJECT_FLAG_IS_SET (pad, GST_PAD_FLAG_FLUSHING) ? 'F' : 'f';
     pad_flags[2] =
         GST_OBJECT_FLAG_IS_SET (pad, GST_PAD_FLAG_BLOCKING) ? 'B' : 'b';
-    pad_flags[3] = '\0';
+    pad_flags[3] = GST_OBJECT_FLAG_IS_SET (pad, GST_PAD_FLAG_EOS) ? 'E' : '\0';
+    pad_flags[4] = '\0';
 
     g_string_append_printf (str,
         "%s  %s_%s [color=black, fillcolor=\"%s\", label=\"%s%s\\n[%c][%s]%s\", height=\"0.2\", style=\"%s\"];\n",
@@ -771,7 +774,7 @@ debug_dump_header (GstBin * bin, GstDebugGraphDetails details, GString * str)
       "    pos=\"0,0!\",\n"
       "    margin=\"0.05,0.05\",\n"
       "    style=\"filled\",\n"
-      "    label=\"Legend\\lElement-States: [~] void-pending, [0] null, [-] ready, [=] paused, [>] playing\\lPad-Activation: [-] none, [>] push, [<] pull\\lPad-Flags: [b]locked, [f]lushing, [b]locking; upper-case is set\\lPad-Task: [T] has started task, [t] has paused task\\l\",\n"
+      "    label=\"Legend\\lElement-States: [~] void-pending, [0] null, [-] ready, [=] paused, [>] playing\\lPad-Activation: [-] none, [>] push, [<] pull\\lPad-Flags: [b]locked, [f]lushing, [b]locking, [E]OS; upper-case is set\\lPad-Task: [T] has started task, [t] has paused task\\l\",\n"
       "  ];"
       "\n", G_OBJECT_TYPE_NAME (bin), GST_OBJECT_NAME (bin),
       (state_name ? state_name : ""), (param_name ? param_name : "")
@@ -789,9 +792,10 @@ debug_dump_footer (GString * str)
   g_string_append_printf (str, "}\n");
 }
 
-/*
+/**
  * gst_debug_bin_to_dot_data:
  * @bin: the top-level pipeline that should be analyzed
+ * @details: type of #GstDebugGraphDetails to use
  *
  * To aid debugging applications one can use this method to obtain the whole
  * network of gstreamer elements that form the pipeline into an dot file.
@@ -816,10 +820,11 @@ gst_debug_bin_to_dot_data (GstBin * bin, GstDebugGraphDetails details)
   return g_string_free (str, FALSE);
 }
 
-/*
+/**
  * gst_debug_bin_to_dot_file:
  * @bin: the top-level pipeline that should be analyzed
- * @file_name: output base filename (e.g. "myplayer")
+ * @details: type of #GstDebugGraphDetails to use
+ * @file_name: (type filename): output base filename (e.g. "myplayer")
  *
  * To aid debugging applications one can use this method to write out the whole
  * network of gstreamer elements that form the pipeline into an dot file.
@@ -866,10 +871,11 @@ gst_debug_bin_to_dot_file (GstBin * bin, GstDebugGraphDetails details,
   g_free (full_file_name);
 }
 
-/*
+/**
  * gst_debug_bin_to_dot_file_with_ts:
  * @bin: the top-level pipeline that should be analyzed
- * @file_name: output base filename (e.g. "myplayer")
+ * @details: type of #GstDebugGraphDetails to use
+ * @file_name: (type filename): output base filename (e.g. "myplayer")
  *
  * This works like gst_debug_bin_to_dot_file(), but adds the current timestamp
  * to the filename, so that it can be used to take multiple snapshots.