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.
This commit is contained in:
Emmanuele Bassi 2012-04-12 17:04:57 +01:00
parent a66fbd258e
commit 98c9dad42f

View File

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