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.
This commit is contained in:
Emmanuele Bassi 2011-12-20 15:17:54 +00:00 committed by Emmanuele Bassi
parent db246569b7
commit 7d4a9c6f1e
2 changed files with 35 additions and 0 deletions

View File

@ -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);
}

View File

@ -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,