GST_PLUGIN_SRC = gstplugin.c
endif
-# FIXME: might not be needed if debug logging is disabled
+if !GST_DISABLE_GST_DEBUG
SUBDIRS_PRINTF = printf
GST_PRINTF_LA = printf/libgstprintf.la
-
+else
+SUBDIRS_PRINTF =
+GST_PRINTF_LA =
+endif
SUBDIRS = $(SUBDIRS_PARSE) $(SUBDIRS_PRINTF)
#endif
+#ifdef GST_DISABLE_GST_DEBUG
+/* for _gst_element_error_printf */
+#define __gst_vasprintf __gst_info_fallback_vasprintf
+int __gst_vasprintf (char **result, char const *format, va_list args);
+#endif
/**** objects made opaque until the private bits have been made private ****/
#include "gst-i18n-lib.h"
#include "glib-compat-private.h"
+#ifndef GST_DISABLE_GST_DEBUG
#include "printf/printf.h"
+#endif
/* Element signals and args */
enum
#endif /* GST_REMOVE_DISABLED */
#endif /* GST_DISABLE_GST_DEBUG */
+/* Need this for _gst_element_error_printf even if GST_REMOVE_DISABLED is set:
+ * fallback function that cleans up the format string and replaces all pointer
+ * extension formats with plain %p. */
+#ifdef GST_DISABLE_GST_DEBUG
+#include <glib/gprintf.h>
+int
+__gst_info_fallback_vasprintf (char **result, char const *format, va_list args)
+{
+ gchar *clean_format, *c;
+ gsize len;
+
+ if (format == NULL)
+ return -1;
+
+ clean_format = g_strdup (format);
+ c = clean_format;
+ while ((c = strstr (c, "%p\a"))) {
+ if (c[3] < 'A' || c[3] > 'Z') {
+ c += 3;
+ continue;
+ }
+ len = strlen (c + 4);
+ g_memmove (c + 2, c + 4, len + 1);
+ c += 2;
+ }
+ while ((c = strstr (clean_format, "%P"))) /* old GST_PTR_FORMAT */
+ c[1] = 'p';
+ while ((c = strstr (clean_format, "%Q"))) /* old GST_SEGMENT_FORMAT */
+ c[1] = 'p';
+
+ len = g_vasprintf (result, clean_format, args);
+
+ g_free (clean_format);
+
+ if (*result == NULL)
+ return -1;
+
+ return len;
+}
+#endif
#ifdef GST_ENABLE_FUNC_INSTRUMENTATION
/* FIXME make this thread specific */