From 1e847985465e98f5d1ae33cdf0ff5dab52e15643 Mon Sep 17 00:00:00 2001 From: Neil Roberts Date: Thu, 31 Jul 2008 08:54:43 +0000 Subject: [PATCH] Bug 1075 - Difficult to bind clutter_stage_new * clutter/clutter-stage.c (clutter_stage_dispose): Unrealize the stage before removing the update idle handler. Otherwise unrealizing causes another redraw to be queued and if the stage object remains alive it will cause an assert and abort. --- ChangeLog | 9 +++++++++ clutter/clutter-stage.c | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9b5d2acd6..044d4ffc4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-07-31 Neil Roberts + + Bug 1075 - Difficult to bind clutter_stage_new + + * clutter/clutter-stage.c (clutter_stage_dispose): Unrealize the + stage before removing the update idle handler. Otherwise + unrealizing causes another redraw to be queued and if the stage + object remains alive it will cause an assert and abort. + 2008-07-30 Neil Roberts * clutter/clutter-stage.c (clutter_stage_class_init): Added the diff --git a/clutter/clutter-stage.c b/clutter/clutter-stage.c index 85052b452..298d8ec97 100644 --- a/clutter/clutter-stage.c +++ b/clutter/clutter-stage.c @@ -455,14 +455,14 @@ clutter_stage_dispose (GObject *object) ClutterStagePrivate *priv = stage->priv; ClutterStageManager *stage_manager = clutter_stage_manager_get_default (); + clutter_actor_unrealize (CLUTTER_ACTOR (object)); + if (priv->update_idle) { g_source_remove (priv->update_idle); priv->update_idle = 0; } - clutter_actor_unrealize (CLUTTER_ACTOR (object)); - _clutter_stage_manager_remove_stage (stage_manager, stage); if (priv->impl)