[clutter] actor: Clear MetaGroups when empty



commit 98c9dad42f5881f9ae48217d0adafe4ba510ea5a
Author: Emmanuele Bassi <ebassi linux intel com>
Date:   Thu Apr 12 17:04:57 2012 +0100

    actor: Clear MetaGroups when empty
    
    When removing the last Action, Constraint, or Effect, we should also be
    clearing the corresponding MetaGroup: code inside ClutterActor relies on
    NULL checks, and changing them all to check for NULL && n_items == 0
    would not be fun.

 clutter/clutter-actor.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)
---
diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
index 2e93854..bb2ec11 100644
--- a/clutter/clutter-actor.c
+++ b/clutter/clutter-actor.c
@@ -3241,6 +3241,9 @@ _clutter_actor_remove_effect_internal (ClutterActor  *self,
     return;
 
   _clutter_meta_group_remove_meta (priv->effects, CLUTTER_ACTOR_META (effect));
+
+  if (_clutter_meta_group_peek_metas (priv->effects) == NULL)
+    g_clear_object (&priv->effects);
 }
 
 static gboolean
@@ -14779,6 +14782,9 @@ clutter_actor_remove_action (ClutterActor  *self,
 
   _clutter_meta_group_remove_meta (priv->actions, CLUTTER_ACTOR_META (action));
 
+  if (_clutter_meta_group_peek_metas (priv->actions) == NULL)
+    g_clear_object (&priv->actions);
+
   g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_ACTIONS]);
 }
 
@@ -14982,6 +14988,10 @@ clutter_actor_remove_constraint (ClutterActor      *self,
 
   _clutter_meta_group_remove_meta (priv->constraints,
                                    CLUTTER_ACTOR_META (constraint));
+
+  if (_clutter_meta_group_peek_metas (priv->constraints) == NULL)
+    g_clear_object (&priv->constraints);
+
   clutter_actor_queue_relayout (self);
 
   g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_CONSTRAINTS]);



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