From cb765a30fcc76a2e35e4b3dfa5d1bd5c64ac6c0b Mon Sep 17 00:00:00 2001
From: Tommi Komulainen <tommi.komulainen@iki.fi>
Date: Sun, 30 Mar 2008 16:30:06 +0300
Subject: [PATCH] ClutterActor: ensure state reversal

It appears to be possible to destroy/dispose/finalize actors without
reversing their visible/realized status, which leads to unbalanced
memory managent and leaked references.

	* clutter/clutter-actor.c (clutter_actor_unrealize): ensure the
	actor is hidden when unrealized
	(clutter_actor_dispose): ensure the actor is unrealized when
	disposed
---
 clutter/clutter/clutter-actor.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
index b8a2418..b51e11e 100644
--- a/clutter/clutter/clutter-actor.c
+++ b/clutter/clutter/clutter-actor.c
@@ -441,6 +441,8 @@ clutter_actor_unrealize (ClutterActor *self)
   if (!CLUTTER_ACTOR_IS_REALIZED (self))
     return;
 
+  clutter_actor_hide (self);
+
   CLUTTER_ACTOR_UNSET_FLAGS (self, CLUTTER_ACTOR_REALIZED);
 
   klass = CLUTTER_ACTOR_GET_CLASS (self);
@@ -1636,6 +1638,8 @@ clutter_actor_dispose (GObject *object)
 
   destroy_shader_data (self);
 
+  clutter_actor_unrealize (self);
+
  if (!(CLUTTER_PRIVATE_FLAGS (self) & CLUTTER_ACTOR_IN_DESTRUCTION))
     {
       CLUTTER_SET_PRIVATE_FLAGS (self, CLUTTER_ACTOR_IN_DESTRUCTION);
-- 
1.5.4.4

