[clutter] stage: Remove an extra reference count



commit ab88511133188ef8965ffb3ab4342bd1da27c2e8
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Sun Jun 24 18:02:45 2012 +0100

    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 files changed, 4 insertions(+), 7 deletions(-)
---
diff --git a/clutter/clutter-stage.c b/clutter/clutter-stage.c
index 08dfd93..6598070 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);
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]