GST_CAT_ELEMENT_PADS = _gst_debug_category_new ("GST_ELEMENT_PADS",
GST_DEBUG_BOLD | GST_DEBUG_FG_WHITE | GST_DEBUG_BG_RED, NULL);
GST_CAT_PADS = _gst_debug_category_new ("GST_PADS",
- GST_DEBUG_BOLD | GST_DEBUG_FG_RED | GST_DEBUG_BG_RED, NULL);
+ GST_DEBUG_BOLD | GST_DEBUG_FG_RED | GST_DEBUG_BG_BLUE, NULL);
GST_CAT_PERFORMANCE = _gst_debug_category_new ("GST_PERFORMANCE",
GST_DEBUG_BOLD | GST_DEBUG_FG_WHITE | GST_DEBUG_BG_RED, NULL);
GST_CAT_PIPELINE = _gst_debug_category_new ("GST_PIPELINE",
GstClockTime elapsed;
gchar *obj = NULL;
GstDebugColorMode color_mode;
+ const gchar *message_str;
FILE *log_file = user_data ? user_data : stderr;
gchar c;
+ /* Get message string first because printing it might call into our custom
+ * printf format extension mechanism which in turn might log something, e.g.
+ * from inside gst_structure_to_string() when something can't be serialised.
+ * This means we either need to do this outside of any critical section or
+ * use a recursive lock instead. As we always need the message string in all
+ * code paths, we might just as well get it here first thing and outside of
+ * the win_print_mutex critical section. */
+ message_str = gst_debug_message_get (message);
+
/* __FILE__ might be a file name or an absolute path or a
* relative path, irrespective of the exact compiler used,
* in which case we want to shorten it to the filename for
pidcolor, pid, clear, g_thread_self (), levelcolor,
gst_debug_level_get_name (level), clear, color,
gst_debug_category_get_name (category), file, line, function, obj,
- clear, gst_debug_message_get (message));
+ clear, message_str);
fflush (log_file);
#undef PRINT_FMT
g_free (color);
fflush (log_file);
/* message */
SET_COLOR (clear);
- fprintf (log_file, " %s\n", gst_debug_message_get (message));
+ fprintf (log_file, " %s\n", message_str);
fflush (log_file);
}
g_mutex_unlock (&win_print_mutex);
fprintf (log_file, "%" GST_TIME_FORMAT PRINT_FMT, GST_TIME_ARGS (elapsed),
pid, g_thread_self (), gst_debug_level_get_name (level),
gst_debug_category_get_name (category), file, line, function, obj,
- gst_debug_message_get (message));
+ message_str);
fflush (log_file);
#undef PRINT_FMT
}