[maemo-commits] [maemo-commits] r17900 - in projects/haf/trunk/libmatchbox2: . matchbox/comp-mgr

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Tue Mar 31 11:57:44 EEST 2009
Author: gw
Date: 2009-03-31 11:57:27 +0300 (Tue, 31 Mar 2009)
New Revision: 17900

Modified:
   projects/haf/trunk/libmatchbox2/ChangeLog
   projects/haf/trunk/libmatchbox2/matchbox/comp-mgr/mb-wm-comp-mgr-clutter.c
Log:
        * matchbox/comp-mgr/mb-wm-comp-mgr-clutter.c: Fix for NB#107323,
          Any actors that were children of the ClutterClient's actor are
          now removed (this also fixes a possible double-free for 
hd-decor)


Modified: projects/haf/trunk/libmatchbox2/ChangeLog
===================================================================
--- projects/haf/trunk/libmatchbox2/ChangeLog	2009-03-31 06:09:09 UTC (rev 17899)
+++ projects/haf/trunk/libmatchbox2/ChangeLog	2009-03-31 08:57:27 UTC (rev 17900)
@@ -1,3 +1,9 @@
+2009-03-31  Gordon Williams  <gordon.williams at collabora.co.uk>
+
+        * matchbox/comp-mgr/mb-wm-comp-mgr-clutter.c: Fix for NB#107323,
+          Any actors that were children of the ClutterClient's actor are
+          now removed (this also fixes a possible double-free for hd-decor)
+
 2009-03-31  Kimmo Hämäläinen  <kimmo.hamalainen at nokia.com>
 
 	Release 0.2.26

Modified: projects/haf/trunk/libmatchbox2/matchbox/comp-mgr/mb-wm-comp-mgr-clutter.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/comp-mgr/mb-wm-comp-mgr-clutter.c	2009-03-31 06:09:09 UTC (rev 17899)
+++ projects/haf/trunk/libmatchbox2/matchbox/comp-mgr/mb-wm-comp-mgr-clutter.c	2009-03-31 08:57:27 UTC (rev 17900)
@@ -278,8 +278,15 @@
   MBWMCompMgrClutterClient * cclient = MB_WM_COMP_MGR_CLUTTER_CLIENT (obj);
   MBWindowManager          * wm  = c->wm;
 
+  if (cclient->priv->texture)
+    clutter_actor_destroy (cclient->priv->texture);
   if (cclient->priv->actor)
-    clutter_actor_destroy (cclient->priv->actor);
+    {
+      /* We want to destroy our main group, but not any children - as they
+       * may have been added by hd-decor, or hd-animation-actor */
+      clutter_group_remove_all(CLUTTER_GROUP(cclient->priv->actor));
+      clutter_actor_destroy (cclient->priv->actor);
+    }
 
   if (cclient->priv->window_damage)
     {
@@ -988,6 +995,11 @@
 #else
   texture = clutter_x11_texture_pixmap_new ();
 #endif
+
+  /* We need to reference this object so it does not get accidentally freed in
+   * the case of AnimationActors */
+  texture = g_object_ref(texture);
+
   sprintf(actor_name, "texture_0x%lx",
           c->xwin_frame ? c->xwin_frame : c->window->xwindow);
   clutter_actor_set_name(texture, actor_name);


More information about the maemo-commits mailing list