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

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Wed Sep 9 17:06:22 EEST 2009
Author: gw
Date: 2009-09-09 17:06:11 +0300 (Wed, 09 Sep 2009)
New Revision: 19312

Modified:
   projects/haf/trunk/libmatchbox2/ChangeLog
   projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c
   projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.h
Log:
	Fixes: NB#119749 - Redundant exposure causing glitches on rotation
	
	* matchbox/core/mb-window-manager.c
	* matchbox/core/mb-window-manager.h: emit a signal 
	  MBWindowManagerSignalRootConfigure when the root window gets 
	  reconfigured (picked up by hildon-desktop). And ignore a
	  root configure if we just got reconfigured to the same
	  size as before.


Modified: projects/haf/trunk/libmatchbox2/ChangeLog
===================================================================
--- projects/haf/trunk/libmatchbox2/ChangeLog	2009-09-09 14:01:35 UTC (rev 19311)
+++ projects/haf/trunk/libmatchbox2/ChangeLog	2009-09-09 14:06:11 UTC (rev 19312)
@@ -1,3 +1,14 @@
+2009-09-09  Gordon Williams <gordon.williams at collabora.co.uk>
+
+	Fixes: NB#119749 - Redundant exposure causing glitches on rotation
+	
+	* matchbox/core/mb-window-manager.c
+	* matchbox/core/mb-window-manager.h: emit a signal 
+	  MBWindowManagerSignalRootConfigure when the root window gets 
+	  reconfigured (picked up by hildon-desktop). And ignore a
+	  root configure if we just got reconfigured to the same
+	  size as before.
+
 2009-09-09  Kimmo Hämäläinen  <kimmo.hamalainen at nokia.com>
 
 	* matchbox/comp-mgr/mb-wm-comp-mgr-clutter.c

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c	2009-09-09 14:01:35 UTC (rev 19311)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c	2009-09-09 14:06:11 UTC (rev 19312)
@@ -445,22 +445,22 @@
   MBWM_MARK();
 
   /* Ignoring syntetic events, not even decrementing the skip_unmaps counter. */
-  if (xev->send_event) 
+  if (xev->send_event)
     return True;
-  
+
   /*
    * When the XCompositeRedirectWindow() is used we get an extra unmap event
    * which is filtered out here. We will have an other event about the redirects
    * with the xany.window set to the parent window.
    */
-  if (xev->window == xev->event) 
+  if (xev->window == xev->event)
     return True;
 
   client = mb_wm_managed_client_from_xwindow(wm, xev->window);
 
   if (client)
     {
-      if (mb_wm_client_ping_in_progress (client)) 
+      if (mb_wm_client_ping_in_progress (client))
         {
           MBWindowManagerClass  *wm_klass;
 
@@ -471,7 +471,7 @@
 
           if (wm_klass->client_responding)
 	    wm_klass->client_responding (wm, client);
-        } 
+        }
 
       if (client->skip_unmaps)
 	{
@@ -555,7 +555,7 @@
 	   * to be broken. We only unprotect when the user sets a new theme to
 	   * be used.
 	   */
-	  same_path = theme_path && wm->theme_path && 
+	  same_path = theme_path && wm->theme_path &&
 		  strcmp ((char *)theme_path, wm->theme_path) == 0;
 	  if (!same_path)
 	    mb_wm_theme_protect ();
@@ -661,6 +661,12 @@
 {
   MBWindowManager * wm = (MBWindowManager*)userdata;
 
+  /* We get some spurious events from X here, so just make sure to ignore them
+   * or we spend ages checking window sizes on rotation. */
+  if (wm->xdpy_width == xev->width &&
+      wm->xdpy_height == xev->height)
+    return True;
+
   wm->xdpy_width = xev->width;
   wm->xdpy_height = xev->height;
 
@@ -677,6 +683,10 @@
 #endif
 
   mb_wm_display_sync_queue (wm, MBWMSyncGeometry);
+
+  mb_wm_object_signal_emit (MB_WM_OBJECT (wm),
+                            MBWindowManagerSignalRootConfigure);
+
   return True;
 }
 
@@ -790,7 +800,7 @@
 static void
 mb_wm_unredirect_client (MBWindowManager *wm,
                          MBWindowManagerClient *client)
-{     
+{
   if (client->cm_client)
     mb_wm_comp_mgr_clutter_set_client_redirection (client->cm_client, FALSE);
 
@@ -849,7 +859,7 @@
   g_debug ("%s: @@@@ Map Notify for %lx @@@@", __func__, xev->window);
 
   /* For the same reason as in mb_wm_handle_unmap_notify(). */
-  if (xev->window == xev->event) 
+  if (xev->window == xev->event)
     return True;
 
   if (!wm_class->client_new)
@@ -891,7 +901,7 @@
 
           if (wm->non_redirection)
             mb_wm_unredirect_client (wm, client);
-      
+
 	  mb_wm_client_set_map_confirmed (client, True);
 	}
 
@@ -1648,9 +1658,9 @@
   MBWindowManagerClass *wm_class;
 
   wm_class = (MBWindowManagerClass *) MB_WM_OBJECT_GET_CLASS (wm);
-  
+
   /*
-   * We just started. If the theme protect file exists we had a crash the 
+   * We just started. If the theme protect file exists we had a crash the
    * previous time we loaded the theme. Then this theme is broken, we need to
    * use the fallback theme.
    */
@@ -2355,7 +2365,7 @@
   if (left_padding == new_padding)
     return;
   left_padding = new_padding;
-  
+
   top = mb_wm_get_visible_main_client(wm);
   if (!top || top == wm->desktop)
     {

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.h
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.h	2009-09-09 14:01:35 UTC (rev 19311)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.h	2009-09-09 14:06:11 UTC (rev 19312)
@@ -66,6 +66,7 @@
 typedef enum
 {
   MBWindowManagerSignalThemeChange = 1,
+  MBWindowManagerSignalRootConfigure, 
 } MBWindowManagerSignal;
 
 typedef enum

More information about the maemo-commits mailing list