diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2012-06-24 18:02:45 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2012-08-11 10:31:09 +0100 |
commit | 9659ed0e0b7e49b1d6ed03c479ae4d6f85cfd65c (patch) | |
tree | 62bc6c198990f39608c50095822874090df5c273 | |
parent | c2c1a0a733e1dd4d3f123d4853e3752f6b65794d (diff) | |
download | clutter-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.c | 11 |
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); } |