Alexandre Julliard : winex11: Add window data structure locking to the GravityNotify event handler.
Alexandre Julliard
julliard at winehq.org
Wed Sep 19 13:39:45 CDT 2012
Module: wine
Branch: master
Commit: 220f1af06493e0c4623c2195435d993be275b3d5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=220f1af06493e0c4623c2195435d993be275b3d5
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Sep 19 13:13:51 2012 +0200
winex11: Add window data structure locking to the GravityNotify event handler.
---
dlls/winex11.drv/event.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c
index 744bc40..2a4fda7 100644
--- a/dlls/winex11.drv/event.c
+++ b/dlls/winex11.drv/event.c
@@ -1100,10 +1100,16 @@ done:
static void X11DRV_GravityNotify( HWND hwnd, XEvent *xev )
{
XGravityEvent *event = &xev->xgravity;
- struct x11drv_win_data *data = X11DRV_get_win_data( hwnd );
- RECT rect;
+ struct x11drv_win_data *data = get_win_data( hwnd );
+ RECT rect, window_rect;
- if (!data || data->whole_window) return; /* only handle this for foreign windows */
+ if (!data) return;
+
+ if (data->whole_window) /* only handle this for foreign windows */
+ {
+ release_win_data( data );
+ return;
+ }
rect.left = event->x;
rect.top = event->y;
@@ -1115,8 +1121,10 @@ static void X11DRV_GravityNotify( HWND hwnd, XEvent *xev )
event->x, event->y );
X11DRV_X_to_window_rect( data, &rect );
+ window_rect = data->window_rect;
+ release_win_data( data );
- if (data->window_rect.left != rect.left || data ->window_rect.top != rect.top)
+ if (window_rect.left != rect.left || window_rect.top != rect.top)
SetWindowPos( hwnd, 0, rect.left, rect.top, 0, 0,
SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOCOPYBITS );
}
More information about the wine-cvs
mailing list