From 0e1dd050a56dcbfbd9583fc4f43ed3c3adc1a5f2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Fri, 12 Apr 2013 23:58:52 +0100 Subject: [PATCH] printf: don't build if debugging subsystem was disabled --- gst/Makefile.am | 7 +++++-- gst/gst_private.h | 5 +++++ gst/gstelement.c | 2 ++ gst/gstinfo.c | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 2 deletions(-) diff --git a/gst/Makefile.am b/gst/Makefile.am index 0322265..b6cf720 100644 --- a/gst/Makefile.am +++ b/gst/Makefile.am @@ -26,10 +26,13 @@ else 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) diff --git a/gst/gst_private.h b/gst/gst_private.h index e1117c5..61762b2 100644 --- a/gst/gst_private.h +++ b/gst/gst_private.h @@ -278,6 +278,11 @@ extern GstDebugCategory *_priv_GST_CAT_POLL; #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 ****/ diff --git a/gst/gstelement.c b/gst/gstelement.c index a46cab5..587de1b 100644 --- a/gst/gstelement.c +++ b/gst/gstelement.c @@ -97,7 +97,9 @@ #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 diff --git a/gst/gstinfo.c b/gst/gstinfo.c index 4b35f98..93cb188 100644 --- a/gst/gstinfo.c +++ b/gst/gstinfo.c @@ -2047,6 +2047,46 @@ _gst_debug_dump_mem (GstDebugCategory * cat, const gchar * file, #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 +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 */ -- 2.7.4