[maemo-commits] [maemo-commits] r18296 - in projects/haf/trunk/libmatchbox2: . matchbox/core

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Fri May 8 14:07:37 EEST 2009
Author: aendrodi
Date: 2009-05-08 14:07:34 +0300 (Fri, 08 May 2009)
New Revision: 18296

Modified:
   projects/haf/trunk/libmatchbox2/ChangeLog
   projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c
   projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.c
Log:
	Regression fix.  We died when the transient-for was unmapped then
	remapped again.  It's still garbage (the application becomes
	unresponsive and uncloseable) but at least we surive.

	* matchbox/core/mb-wm-client-base.c (mb_wm_client_base_destroy):
	  Reinstantiated the code which detransitived the destroyed
	  client's transients.  I don't know what does it take for
	  people to read the **** comments around code?
	* matchbox/core/mb-window-manager.c (mb_wm_focus_client):
	  Removing some nonsense code.


Modified: projects/haf/trunk/libmatchbox2/ChangeLog
===================================================================
--- projects/haf/trunk/libmatchbox2/ChangeLog	2009-05-08 10:50:13 UTC (rev 18295)
+++ projects/haf/trunk/libmatchbox2/ChangeLog	2009-05-08 11:07:34 UTC (rev 18296)
@@ -1,3 +1,16 @@
+2009-05-08  Adam Endrodi  <adam.endrodi at blumsoft.eu>
+
+	Regression fix.  We died when the transient-for was unmapped then
+	remapped again.  It's still garbage (the application becomes
+	unresponsive and uncloseable) but at least we surive.
+
+	* matchbox/core/mb-wm-client-base.c (mb_wm_client_base_destroy):
+	  Reinstantiated the code which detransitived the destroyed
+	  client's transients.  I don't know what does it take for
+	  people to read the **** comments around code?
+	* matchbox/core/mb-window-manager.c (mb_wm_focus_client):
+	  Removing some nonsense code.
+
 2009-05-07  Adam Endrodi  <adam.endrodi at blumsoft.eu>
 
 	* matchbox/mb-wm-config.h.in:

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c	2009-05-08 10:50:13 UTC (rev 18295)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c	2009-05-08 11:07:34 UTC (rev 18296)
@@ -2001,19 +2001,6 @@
 
   if (mb_wm_client_focus (client))
     {
-      /* FIXME this appears not to do anything */
-      if (wm->focused_client)
-	{
-	  MBWindowManagerClient *trans_old = wm->focused_client;
-	  MBWindowManagerClient *trans_new = client;
-
-	  while (trans_old->transient_for)
-	    trans_old = trans_old->transient_for;
-
-	  while (trans_new->transient_for)
-	    trans_new = trans_new->transient_for;
-	}
-
       wm->focused_client = client;
       return True;
     }

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.c	2009-05-08 10:50:13 UTC (rev 18295)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.c	2009-05-08 11:07:34 UTC (rev 18296)
@@ -84,6 +84,7 @@
   MBWindowManagerClient *parent;
   MBWindowManagerClient *client;
   MBWindowManager *wm;
+  MBWMList *li, *next;
 
   MBWM_MARK();
 
@@ -114,9 +115,17 @@
   mb_wm_util_untrap_x_errors();
 
   parent = mb_wm_client_get_transient_for (MB_WM_CLIENT(this));
-
   if (parent)
     mb_wm_client_remove_transient (parent, MB_WM_CLIENT(this));
+
+  /* We have to make sure that the transients no longer refer to this
+   * client, which is about the be destroyed. */
+  for (li = client->transients; li; li = next)
+    {
+      MB_WM_CLIENT(li->data)->transient_for = NULL;
+      next = li->next;
+      free (li);
+    }
 }
 
 static int


More information about the maemo-commits mailing list