diff --git a/ChangeLog b/ChangeLog index 2b68b1011..fe5b2c54e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-11-27 Emmanuele Bassi + + * clutter/clutter-actor.c (clutter_actor_destroy): Remove the + reference we hold on the actor, as it was preventing the finalization + of every child on the stage. + 2007-11-26 Emmanuele Bassi * clutter/x11/clutter-stage-x11.c: diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c index 12083ca6a..39cde938e 100644 --- a/clutter/clutter-actor.c +++ b/clutter/clutter-actor.c @@ -1124,9 +1124,10 @@ clutter_actor_dispose (GObject *object) { ClutterActor *self = CLUTTER_ACTOR (object); - CLUTTER_NOTE (MISC, "Disposing of object (id=%d) of type `%s'", + CLUTTER_NOTE (MISC, "Disposing of object (id=%d) of type `%s' (ref_count:%d)", self->priv->id, - g_type_name (G_OBJECT_TYPE (self))); + g_type_name (G_OBJECT_TYPE (self)), + object->ref_count); if (!(CLUTTER_PRIVATE_FLAGS (self) & CLUTTER_ACTOR_IN_DESTRUCTION)) { @@ -1145,6 +1146,10 @@ clutter_actor_finalize (GObject *object) { ClutterActor *actor = CLUTTER_ACTOR (object); + CLUTTER_NOTE (MISC, "Finalize object (id=%d) of type `%s'", + actor->priv->id, + g_type_name (G_OBJECT_TYPE (actor))); + g_free (actor->priv->name); G_OBJECT_CLASS (clutter_actor_parent_class)->finalize (object); @@ -1728,6 +1733,8 @@ clutter_actor_destroy (ClutterActor *self) if (!(CLUTTER_PRIVATE_FLAGS (self) & CLUTTER_ACTOR_IN_DESTRUCTION)) g_object_run_dispose (G_OBJECT (self)); + + g_object_unref (self); } /**