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

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Wed May 6 10:51:44 EEST 2009
Author: aendrodi
Date: 2009-05-06 10:51:40 +0300 (Wed, 06 May 2009)
New Revision: 18255

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
   projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.h
Log:
	Now, try to deal with preexisting fullscreen clients correctly,
	for real.

	* matchbox/core/mb-wm-client-base.c (mb_wm_client_base_realize):
	  Do create xwin_frame for fs clients but don't reparent them;
	  rather reparent them to the root window.  This way base_display_sync()
	  won't be confused by the lack of xwin_frame.
	* matchbox/core/mb-wm-client-base.h (MB_WM_DBG_SKIP_UNMAPS):
	  Macro for skip_unmaps debugging.
	* matchbox/core/mb-window-manager.c:
	  Use it.


Modified: projects/haf/trunk/libmatchbox2/ChangeLog
===================================================================
--- projects/haf/trunk/libmatchbox2/ChangeLog	2009-05-06 07:38:14 UTC (rev 18254)
+++ projects/haf/trunk/libmatchbox2/ChangeLog	2009-05-06 07:51:40 UTC (rev 18255)
@@ -1,3 +1,17 @@
+2009-05-06  Adam Endrodi  <adam.endrodi at blumsoft.eu>
+
+	Now, try to deal with preexisting fullscreen clients correctly,
+	for real.
+
+	* matchbox/core/mb-wm-client-base.c (mb_wm_client_base_realize):
+	  Do create xwin_frame for fs clients but don't reparent them;
+	  rather reparent them to the root window.  This way base_display_sync()
+	  won't be confused by the lack of xwin_frame.
+	* matchbox/core/mb-wm-client-base.h (MB_WM_DBG_SKIP_UNMAPS):
+	  Macro for skip_unmaps debugging.
+	* matchbox/core/mb-window-manager.c:
+	  Use it.
+
 2009-05-06  Kimmo Hämäläinen  <kimmo.hamalainen at nokia.com>
 
 	Release 0.2.37

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c	2009-05-06 07:38:14 UTC (rev 18254)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c	2009-05-06 07:51:40 UTC (rev 18255)
@@ -475,6 +475,7 @@
           /* When we skip an unmap, skip a map too. */
 	  client->skip_unmaps--;
           client->skip_maps++;
+          MB_WM_DBG_SKIP_UNMAPS (client);
 	}
       else
 	{
@@ -763,7 +764,10 @@
   if (mb_wm_is_my_window (wm, xev->window, &client))
     {
       if (client && client->skip_maps)
-        client->skip_maps--;
+        {
+          client->skip_maps--;
+          MB_WM_DBG_SKIP_UNMAPS (client);
+        }
       else if (client)
 	{
 	  /*
@@ -1365,6 +1369,7 @@
 		*/
 	       client->skip_unmaps++;
                client->skip_maps--;
+               MB_WM_DBG_SKIP_UNMAPS (client);
 
 #if ENABLE_COMPOSITE
 	       /*

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-06 07:38:14 UTC (rev 18254)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.c	2009-05-06 07:51:40 UTC (rev 18255)
@@ -226,9 +226,11 @@
        */
       XReparentWindow(wm->xdpy,
 	              MB_WM_CLIENT_XWIN(client),
-                      client->xwin_frame,
+                      (client->window->ewmh_state
+                       & MBWMClientWindowEWMHStateFullscreen)
+                        ?  client->wmref->root_win->xwindow
+                        : client->xwin_frame,
                       0, 0);
-
     }
   else
     {
@@ -514,6 +516,7 @@
 	      if (!fullscreen)
 		{
 		  client->skip_unmaps++;
+                  MB_WM_DBG_SKIP_UNMAPS (client);
 		  XReparentWindow(wm->xdpy, MB_WM_CLIENT_XWIN(client),
 				  client->xwin_frame, 0, 0);
 		  XMapWindow(wm->xdpy, client->xwin_frame);
@@ -529,7 +532,10 @@
 	      else
 		{
 		  if (is_window_mapped(wm->xdpy, MB_WM_CLIENT_XWIN(client))) 
-		    client->skip_unmaps++;
+                    {
+                      client->skip_unmaps++;
+                      MB_WM_DBG_SKIP_UNMAPS (client);
+                    }
 
 		  XReparentWindow(wm->xdpy, MB_WM_CLIENT_XWIN(client),
 				  wm->root_win->xwindow, 0, 0);
@@ -541,6 +547,7 @@
 	  else
 	    {
 	      client->skip_unmaps++;
+              MB_WM_DBG_SKIP_UNMAPS (client);
 	      XReparentWindow(wm->xdpy, MB_WM_CLIENT_XWIN(client),
 			      wm->root_win->xwindow,
 			      client->window->geometry.x,

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.h
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.h	2009-05-06 07:38:14 UTC (rev 18254)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.h	2009-05-06 07:51:40 UTC (rev 18255)
@@ -25,6 +25,14 @@
 #define MB_WM_CLIENT_BASE_CLASS(c) ((MBWMClientBaseClass*)(c))
 #define MB_WM_TYPE_CLIENT_BASE (mb_wm_client_base_class_type ())
 
+#if 0
+# define MB_WM_DBG_SKIP_UNMAPS(c) \
+  g_debug("%s:%u SKIP_UNMAPS c=%p, skip_unmaps=%d, skip_maps=%d", \
+          __FUNCTION__, __LINE__, (c), (c)->skip_unmaps, (c)->skip_maps)
+#else
+# define MB_WM_DBG_SKIP_UNMAPS(c) /* NOP */
+#endif
+
 /**
  * A MBWindowManagerClient which exists to be the superclass of all classes
  * representing particular types of client.


More information about the maemo-commits mailing list