summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2012-06-24 18:02:45 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2012-08-11 10:31:09 +0100
commit9659ed0e0b7e49b1d6ed03c479ae4d6f85cfd65c (patch)
tree62bc6c198990f39608c50095822874090df5c273
parentc2c1a0a733e1dd4d3f123d4853e3752f6b65794d (diff)
downloadclutter-9659ed0e0b7e49b1d6ed03c479ae4d6f85cfd65c.tar.gz
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. (cherry picked from commit ab88511133188ef8965ffb3ab4342bd1da27c2e8) Signed-off-by: Emmanuele Bassi <ebassi@gnome.org>
-rw-r--r--clutter/clutter-stage.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/clutter/clutter-stage.c b/clutter/clutter-stage.c
index e40b0c959..6472a2743 100644
--- a/clutter/clutter-stage.c
+++ b/clutter/clutter-stage.c
@@ -1802,13 +1802,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)
@@ -1824,6 +1817,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);
}