From ab88511133188ef8965ffb3ab4342bd1da27c2e8 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Sun, 24 Jun 2012 18:02:45 +0100 Subject: [PATCH] stage: Remove an extra reference count The dispose sequence will keep the object alive, and we need to release the last reference held by the StageManager before releasing control to GObject. --- clutter/clutter-stage.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/clutter/clutter-stage.c b/clutter/clutter-stage.c index 08dfd9355..6598070d4 100644 --- a/clutter/clutter-stage.c +++ b/clutter/clutter-stage.c @@ -1798,13 +1798,6 @@ clutter_stage_dispose (GObject *object) clutter_actor_hide (CLUTTER_ACTOR (object)); - /* remove_stage() will unref() the stage instance, so we need to - * add a reference here to keep it temporarily alive - */ - g_object_ref (object); - stage_manager = clutter_stage_manager_get_default (); - _clutter_stage_manager_remove_stage (stage_manager, stage); - _clutter_clear_events_queue_for_stage (stage); if (priv->impl != NULL) @@ -1820,6 +1813,10 @@ clutter_stage_dispose (GObject *object) clutter_actor_remove_all_children (CLUTTER_ACTOR (object)); + /* this will release the reference on the stage */ + stage_manager = clutter_stage_manager_get_default (); + _clutter_stage_manager_remove_stage (stage_manager, stage); + G_OBJECT_CLASS (clutter_stage_parent_class)->dispose (object); }