Alexandre Julliard : winex11: Avoid useless updates of the desktop window Z-order.

Alexandre Julliard julliard at winehq.org
Tue Mar 18 07:44:54 CDT 2008


Module: wine
Branch: master
Commit: f40b0458580f55a56db384521ae63b66c80df0aa
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f40b0458580f55a56db384521ae63b66c80df0aa

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Mar 18 12:19:43 2008 +0100

winex11: Avoid useless updates of the desktop window Z-order.

---

 dlls/winex11.drv/winpos.c |   30 ++++++++++++++++--------------
 1 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/dlls/winex11.drv/winpos.c b/dlls/winex11.drv/winpos.c
index 42fffd8..eed9eeb 100644
--- a/dlls/winex11.drv/winpos.c
+++ b/dlls/winex11.drv/winpos.c
@@ -68,7 +68,7 @@ void X11DRV_Expose( HWND hwnd, XEvent *xev )
     XExposeEvent *event = &xev->xexpose;
     RECT rect;
     struct x11drv_win_data *data;
-    int flags = RDW_INVALIDATE | RDW_ERASE | RDW_ALLCHILDREN;
+    int flags = RDW_INVALIDATE | RDW_ERASE;
 
     TRACE( "win %p (%lx) %d,%d %dx%d\n",
            hwnd, event->window, event->x, event->y, event->width, event->height );
@@ -89,22 +89,24 @@ void X11DRV_Expose( HWND hwnd, XEvent *xev )
     rect.right  = rect.left + event->width;
     rect.bottom = rect.top + event->height;
 
-    if (event->window == root_window)
-        OffsetRect( &rect, virtual_screen_rect.left, virtual_screen_rect.top );
-
-    SERVER_START_REQ( update_window_zorder )
+    if (event->window != root_window)
     {
-        req->window      = hwnd;
-        req->rect.left   = rect.left;
-        req->rect.top    = rect.top;
-        req->rect.right  = rect.right;
-        req->rect.bottom = rect.bottom;
-        wine_server_call( req );
+        SERVER_START_REQ( update_window_zorder )
+        {
+            req->window      = hwnd;
+            req->rect.left   = rect.left;
+            req->rect.top    = rect.top;
+            req->rect.right  = rect.right;
+            req->rect.bottom = rect.bottom;
+            wine_server_call( req );
+        }
+        SERVER_END_REQ;
+
+        /* make position relative to client area instead of parent */
+        OffsetRect( &rect, -data->client_rect.left, -data->client_rect.top );
+        flags |= RDW_ALLCHILDREN;
     }
-    SERVER_END_REQ;
 
-    /* make position relative to client area instead of parent */
-    OffsetRect( &rect, -data->client_rect.left, -data->client_rect.top );
     RedrawWindow( hwnd, &rect, 0, flags );
 }
 




More information about the wine-cvs mailing list