Mailing List Archive

r19312 - in projects/haf/trunk/libmatchbox2: . matchbox/core
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@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@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

_______________________________________________
maemo-commits mailing list
maemo-commits@maemo.org
https://lists.maemo.org/mailman/listinfo/maemo-commits