From 98c9dad42f5881f9ae48217d0adafe4ba510ea5a Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 12 Apr 2012 17:04:57 +0100 Subject: [PATCH] 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 file changed, 10 insertions(+) diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c index 2e9385400..bb2ec114c 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]);