Module: wine Branch: oldstable Commit: 01ea6a5b63be3924055b59893b388ad85bf23a7c URL: https://source.winehq.org/git/wine.git/?a=commit;h=01ea6a5b63be3924055b59893...
Author: Andrew Eikum aeikum@codeweavers.com Date: Tue Sep 17 08:09:36 2019 -0500
winex11.drv: Throttle calls to XResetScreenSaver.
Frequent calls to XResetScreenSaver cause performance problems on some GPU drivers, see https://bugs.freedesktop.org/show_bug.cgi?id=110659
Signed-off-by: Andrew Eikum aeikum@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org (cherry picked from commit cb703739e5c138e3beffab321b84edb129156000) Signed-off-by: Michael Stefaniuc mstefani@winehq.org
---
dlls/winex11.drv/window.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index 7a3b340e19..7589b3228e 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -1792,10 +1792,20 @@ static LRESULT CALLBACK desktop_wndproc_wrapper( HWND hwnd, UINT msg, WPARAM wp, switch (msg) { case WM_WINE_NOTIFY_ACTIVITY: - XResetScreenSaver( gdi_display ); - XFlush( gdi_display ); + { + static ULONGLONG last = 0; + ULONGLONG now = GetTickCount64(); + /* calling XResetScreenSaver too often can cause performance + * problems, so throttle it */ + if (now > last + 5000) + { + XResetScreenSaver( gdi_display ); + XFlush( gdi_display ); + last = now; + } break; } + } return desktop_orig_wndproc( hwnd, msg, wp, lp ); }