From 220f1af06493e0c4623c2195435d993be275b3d5 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Wed, 19 Sep 2012 13:13:51 +0200 Subject: [PATCH] winex11: Add window data structure locking to the GravityNotify event handler. --- dlls/winex11.drv/event.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index 744bc403c0b..2a4fda7b401 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 ); } -- 2.11.4.GIT