[Cogl] [PATCH] Fix disabling debugging
Robert Bragg
robert at sixbynine.org
Fri May 18 07:39:49 PDT 2012
Thanks for fixing this.
Reviewed-by: Robert Bragg <robert at linux.intel.com>
regards,
- Robert
On Thu, May 17, 2012 at 3:22 PM, Neil Roberts <neil at linux.intel.com> wrote:
> When --disable-debug is passed to the configure script it was actually
> still defining COGL_ENABLE_DEBUG so very little would end up being
> disabled. If COGL_ENABLE_DEBUG actually got defined it would also fail
> to compile because _cogl_debug_instances and COGL_DEBUG_N_LONGS from
> cogl-debug.h were only defined if debugging is enabled but they are
> used regardless.
>
> This patch also makes it so that the _COGL_RETURN_IF_FAIL family of
> macros that are used when glib support is disabled are now disabled if
> debugging is disabled. When the glib macros are used they are already
> disabled because we additionally define G_DISABLE_CHECKS.
>
> 'COGL_HANDLE_DEBUG' has been removed from the list of defines passed
> when debugging is enabled because CoglHandle has already been removed
> and it is not used anywhere in the code.
> ---
> cogl/cogl-debug.h | 7 +++----
> cogl/cogl-framebuffer.c | 2 ++
> cogl/cogl-util.h | 19 +++++++++++++++----
> configure.ac | 4 ++--
> 4 files changed, 22 insertions(+), 10 deletions(-)
>
> diff --git a/cogl/cogl-debug.h b/cogl/cogl-debug.h
> index efb60e1..abe8f9e 100644
> --- a/cogl/cogl-debug.h
> +++ b/cogl/cogl-debug.h
> @@ -72,17 +72,16 @@ typedef enum {
> COGL_DEBUG_N_FLAGS
> } CoglDebugFlags;
>
> -#ifdef COGL_ENABLE_DEBUG
> -
> +extern GHashTable *_cogl_debug_instances;
> #define COGL_DEBUG_N_LONGS COGL_FLAGS_N_LONGS_FOR_SIZE (COGL_DEBUG_N_FLAGS)
>
> +#ifdef COGL_ENABLE_DEBUG
> +
> /* _cogl_debug_flags currently needs to exported outside of the shared
> library for cogl-pango. The special COGL_EXPORT macro is needed to
> get this to work when building with MSVC */
> COGL_EXPORT extern unsigned long _cogl_debug_flags[COGL_DEBUG_N_LONGS];
>
> -extern GHashTable *_cogl_debug_instances;
> -
> #define COGL_DEBUG_ENABLED(flag) \
> COGL_FLAGS_GET (_cogl_debug_flags, flag)
>
> diff --git a/cogl/cogl-framebuffer.c b/cogl/cogl-framebuffer.c
> index 45af11b..cce0ccb 100644
> --- a/cogl/cogl-framebuffer.c
> +++ b/cogl/cogl-framebuffer.c
> @@ -126,7 +126,9 @@ typedef struct _CoglFramebufferStackEntry
>
> extern CoglObjectClass _cogl_onscreen_class;
>
> +#ifdef COGL_ENABLE_DEBUG
> static CoglUserDataKey wire_pipeline_key;
> +#endif
>
> static void _cogl_offscreen_free (CoglOffscreen *offscreen);
>
> diff --git a/cogl/cogl-util.h b/cogl/cogl-util.h
> index 4458985..67861bc 100644
> --- a/cogl/cogl-util.h
> +++ b/cogl/cogl-util.h
> @@ -175,7 +175,18 @@ _cogl_util_popcountl (unsigned long num)
> #define _COGL_RETURN_IF_FAIL(EXPR) g_return_if_fail(EXPR)
> #define _COGL_RETURN_VAL_IF_FAIL(EXPR, VAL) g_return_val_if_fail(EXPR, VAL)
> #else
> -#define _COGL_RETURN_IF_FAIL(EXPR) do { \
> +#if COGL_ENABLE_DEBUG
> +#define _COGL_RETURN_START do {
> +#define _COGL_RETURN_END } while (0)
> +#else /* COGL_ENABLE_DEBUG */
> +/* If debugging is disabled then we don't actually want to do the
> + * check but we still want the code for the expression to be generated
> + * so that it won't give loads of warnings about unused variables.
> + * Therefore we just surround the block with if(0) */
> +#define _COGL_RETURN_START do { if (0) {
> +#define _COGL_RETURN_END } } while (0)
> +#endif /* COGL_ENABLE_DEBUG */
> +#define _COGL_RETURN_IF_FAIL(EXPR) _COGL_RETURN_START { \
> if (!(EXPR)) \
> { \
> fprintf (stderr, "file %s: line %d: assertion `%s' failed", \
> @@ -184,8 +195,8 @@ _cogl_util_popcountl (unsigned long num)
> #EXPR); \
> return; \
> }; \
> - } while(0)
> -#define _COGL_RETURN_VAL_IF_FAIL(EXPR, VAL) do { \
> + } _COGL_RETURN_END
> +#define _COGL_RETURN_VAL_IF_FAIL(EXPR, VAL) _COGL_RETURN_START { \
> if (!(EXPR)) \
> { \
> fprintf (stderr, "file %s: line %d: assertion `%s' failed", \
> @@ -194,7 +205,7 @@ _cogl_util_popcountl (unsigned long num)
> #EXPR); \
> return (VAL); \
> }; \
> - } while(0)
> + } _COGL_RETURN_END
> #endif /* COGL_HAS_GLIB_SUPPORT */
>
> /* Match a CoglPixelFormat according to channel masks, color depth,
> diff --git a/configure.ac b/configure.ac
> index c92f6dc..f2df96b 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -171,11 +171,11 @@ AS_CASE(
> [yes],
> [
> test "$cflags_set" = set || CFLAGS="$CFLAGS -g -O0"
> - COGL_EXTRA_CFLAGS="$COGL_EXTRA_CFLAGS -DCOGL_GL_DEBUG -DCOGL_OBJECT_DEBUG -DCOGL_HANDLE_DEBUG -DCOGL_ENABLE_DEBUG"
> + COGL_EXTRA_CFLAGS="$COGL_EXTRA_CFLAGS -DCOGL_GL_DEBUG -DCOGL_OBJECT_DEBUG -DCOGL_ENABLE_DEBUG"
> ],
> [no],
> [
> - COGL_EXTRA_CFLAGS="$COGL_EXTRA_CFLAGS -DCOGL_ENABLE_DEBUG -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
> + COGL_EXTRA_CFLAGS="$COGL_EXTRA_CFLAGS -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
> ],
> [AC_MSG_ERROR([Unknown argument for --enable-debug])]
> )
> --
> 1.7.3.16.g9464b
>
> _______________________________________________
> Cogl mailing list
> Cogl at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/cogl
More information about the Cogl
mailing list