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

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Wed Apr 29 15:32:53 EEST 2009
Author: aendrodi
Date: 2009-04-29 15:32:50 +0300 (Wed, 29 Apr 2009)
New Revision: 18189

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:
	Reliability fixes.  Do not freak out when the wm is restarted
	with a fullscreen application in front.

	* matchbox/core/mb-wm-client-base.c (mb_wm_client_base_realize):
	  When a fullscreen client is realized (mapped effectively)
	  do not create its frame not even if it's not undecorated
	  otherwise because then XRestackWindow() won't be able to
	  stack it properly (because the client window will be a child
	  of the frame, not the root window).
	* matchbox/core/mb-window-manager.c (stack_sync_to_display):
	  Missing XSync() added after XRestackWindows().


Modified: projects/haf/trunk/libmatchbox2/ChangeLog
===================================================================
--- projects/haf/trunk/libmatchbox2/ChangeLog	2009-04-29 08:11:17 UTC (rev 18188)
+++ projects/haf/trunk/libmatchbox2/ChangeLog	2009-04-29 12:32:50 UTC (rev 18189)
@@ -1,3 +1,17 @@
+2009-04-29  Adam Endrodi  <adam.endrodi at blumsoft.eu>
+
+	Reliability fixes.  Do not freak out when the wm is restarted
+	with a fullscreen application in front.
+
+	* matchbox/core/mb-wm-client-base.c (mb_wm_client_base_realize):
+	  When a fullscreen client is realized (mapped effectively)
+	  do not create its frame not even if it's not undecorated
+	  otherwise because then XRestackWindow() won't be able to
+	  stack it properly (because the client window will be a child
+	  of the frame, not the root window).
+	* matchbox/core/mb-window-manager.c (stack_sync_to_display):
+	  Missing XSync() added after XRestackWindows().
+
 2009-04-28  Adam Endrodi  <adam.endrodi at blumsoft.eu>
 
 	* matchbox/core/mb-window-manager.c (mb_wm_handle_map_notify):

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c	2009-04-29 08:11:17 UTC (rev 18188)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c	2009-04-29 12:32:50 UTC (rev 18189)
@@ -938,7 +938,7 @@
 stack_sync_to_display (MBWindowManager *wm)
 {
   Window *win_list = NULL;
-  int count = 0;
+  int count = 0, error;
 
   if (!wm->stack_n_clients)
     return;
@@ -955,7 +955,9 @@
 
   mb_wm_util_trap_x_errors();
   XRestackWindows(wm->xdpy, win_list, count);
-  mb_wm_util_untrap_x_errors();
+  XSync(wm->xdpy, False);
+  if ((error = mb_wm_util_untrap_x_errors()) != 0)
+    g_warning("XRestackWindows(): %d", error);
 }
 
 void

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.c	2009-04-29 08:11:17 UTC (rev 18188)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.c	2009-04-29 12:32:50 UTC (rev 18189)
@@ -166,9 +166,11 @@
   /*
    * We only create a frame window if the client is decorated (decors are
    * constructed in the _init functions, so we can easily test if the frame
-   * is needed or not).
+   * is needed or not).  An exception is fullscreen windows, which should not
+   * have a frame, otherwise XRestackWindows() will be irritated.
    */
-  if (client->decor)
+  if (client->decor
+      && !(client->window->ewmh_state & MBWMClientWindowEWMHStateFullscreen))
     {
       if (client->xwin_frame == None)
 	{


More information about the maemo-commits mailing list