[clutter] actor: Improve the debug name



commit a3a2fbfd5a738ffeb2b8f55183ff49dc8e884342
Author: Emmanuele Bassi <ebassi linux intel com>
Date:   Thu Jun 7 11:34:12 2012 +0100

    actor: Improve the debug name
    
    Only for debug builds, the debug name should include a) actor name, b)
    type name, and c) pointer address.
    
    For non-debug builds we can live with the actor/type name.

 clutter/clutter-actor.c |   32 ++++++++++++++++++++++++++++++--
 1 files changed, 30 insertions(+), 2 deletions(-)
---
diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
index 4a5d8b9..8f87730 100644
--- a/clutter/clutter-actor.c
+++ b/clutter/clutter-actor.c
@@ -754,6 +754,11 @@ struct _ClutterActorPrivate
 
   ClutterColor bg_color;
 
+#ifdef CLUTTER_ENABLE_DEBUG
+  /* a string used for debugging messages */
+  gchar *debug_name;
+#endif
+
   /* bitfields */
 
   /* fixed position and sizes */
@@ -1051,8 +1056,27 @@ G_DEFINE_TYPE_WITH_CODE (ClutterActor,
 const gchar *
 _clutter_actor_get_debug_name (ClutterActor *actor)
 {
-  return actor->priv->name != NULL ? actor->priv->name
-                                   : G_OBJECT_TYPE_NAME (actor);
+  ClutterActorPrivate *priv = actor->priv;
+  const gchar *retval;
+
+#ifdef CLUTTER_ENABLE_DEBUG
+  if (G_UNLIKELY (priv->debug_name == NULL))
+    {
+      priv->debug_name = g_strdup_printf ("<%s>[<%s>:%p]",
+                                          priv->name != NULL ? priv->name
+                                                             : "unnamed",
+                                          G_OBJECT_TYPE_NAME (actor),
+                                          actor);
+    }
+
+  retval = priv->debug_name;
+#else
+  retval = priv->name != NULL
+         ? priv->name
+         : G_OBJECT_TYPE_NAME (actor);
+#endif
+
+  return retval;
 }
 
 #ifdef CLUTTER_ENABLE_DEBUG
@@ -5274,6 +5298,10 @@ clutter_actor_finalize (GObject *object)
 
   g_free (priv->name);
 
+#ifdef CLUTTER_ENABLE_DEBUG
+  g_free (priv->debug_name);
+#endif
+
   G_OBJECT_CLASS (clutter_actor_parent_class)->finalize (object);
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]