Add diagnostic mode
authorEmmanuele Bassi <ebassi@linux.intel.com>
Tue, 20 Dec 2011 15:17:54 +0000 (15:17 +0000)
committerEmmanuele Bassi <ebassi@gnome.org>
Wed, 28 Dec 2011 09:37:53 +0000 (09:37 +0000)
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
clutter/clutter-private.h

index 49ebd02..860fa6f 100644 (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);
+}
index 103bc20..51841cf 100644 (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,