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