Module: wine Branch: master Commit: b7987db36f9a9d79ac57d08e1bfd482b238ffcc1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b7987db36f9a9d79ac57d08e1b... Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Feb 24 12:14:58 2011 +0100 winex11: Update the window cursor at most once every 100ms if nothing changed. --- dlls/winex11.drv/mouse.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c index be55085..794056b 100644 --- a/dlls/winex11.drv/mouse.c +++ b/dlls/winex11.drv/mouse.c @@ -265,8 +265,12 @@ static HWND update_mouse_state( HWND hwnd, Window window, int x, int y, unsigned pt->x = data->client_rect.right - data->client_rect.left - 1 - pt->x; MapWindowPoints( hwnd, 0, pt, 1 ); - cursor_window = hwnd; - sync_window_cursor( data ); + if (InterlockedExchangePointer( (void **)&cursor_window, hwnd ) != hwnd || + GetTickCount() - last_time_modified > 100) + { + cursor_window = hwnd; + sync_window_cursor( data ); + } if (hwnd != GetDesktopWindow()) hwnd = GetAncestor( hwnd, GA_ROOT ); /* update the wine server Z-order */