From 7d4a9c6f1e8e6f77688a5d15fc2644769d2a60a1 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Tue, 20 Dec 2011 15:17:54 +0000 Subject: [PATCH] Add diagnostic mode GLib has a "diagnostic mode" switch that can be checked to enable debug messages on deprecated properties and signals, as these are purely run-time constructs, and as such cannot be caught by compiler warnings. The diagnostic mode is toggled by a simple environment variable, and can be used to ease porting of application code. We can use something similar to mark deprecated virtual functions and other run-time constructs; to avoid collisions, we should use our own environment variable, CLUTTER_ENABLE_DIAGNOSTIC. --- clutter/clutter-main.c | 31 +++++++++++++++++++++++++++++++ clutter/clutter-private.h | 4 ++++ 2 files changed, 35 insertions(+) diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c index 49ebd026f..860fa6f6d 100644 --- a/clutter/clutter-main.c +++ b/clutter/clutter-main.c @@ -3752,3 +3752,34 @@ _clutter_debug_message (const char *format, ...) _clutter_debug_messagev (format, args); va_end (args); } + +gboolean +_clutter_diagnostic_enabled (void) +{ + static const char *clutter_enable_diagnostic = NULL; + + if (G_UNLIKELY (clutter_enable_diagnostic == NULL)) + { + clutter_enable_diagnostic = g_getenv ("CLUTTER_ENABLE_DIAGNOSTIC"); + + if (clutter_enable_diagnostic == NULL) + clutter_enable_diagnostic = "0"; + } + + return *clutter_enable_diagnostic != '0'; +} + +void +_clutter_diagnostic_message (const char *format, ...) +{ + va_list args; + char *fmt; + + fmt = g_strconcat ("[DIAGNOSTIC]: ", format, NULL); + + va_start (args, format); + g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, fmt, args); + va_end (args); + + g_free (fmt); +} diff --git a/clutter/clutter-private.h b/clutter/clutter-private.h index 103bc204d..51841cf91 100644 --- a/clutter/clutter-private.h +++ b/clutter/clutter-private.h @@ -210,6 +210,10 @@ const gchar *_clutter_gettext (const gchar *str); gboolean _clutter_feature_init (GError **error); +/* Diagnostic mode */ +gboolean _clutter_diagnostic_enabled (void); +void _clutter_diagnostic_message (const char *fmt, ...); + /* Picking code */ guint _clutter_pixel_to_id (guchar pixel[4]); void _clutter_id_to_color (guint id,