diff options
author | Simon Rettberg | 2020-12-02 08:35:55 +0100 |
---|---|---|
committer | Simon Rettberg | 2020-12-02 08:35:55 +0100 |
commit | e5319b91d163384ee22db077b2d37688d65646c9 (patch) | |
tree | 04acbf822516634814098b38a9878ffc1a55529d /driver/windows.c | |
parent | driver/timers.c: fix flush_events() (diff) | |
parent | 5.44 (diff) | |
download | xscreensaver-e5319b91d163384ee22db077b2d37688d65646c9.tar.gz xscreensaver-e5319b91d163384ee22db077b2d37688d65646c9.tar.xz xscreensaver-e5319b91d163384ee22db077b2d37688d65646c9.zip |
Merge branch 'master' into openslx
Diffstat (limited to 'driver/windows.c')
-rw-r--r-- | driver/windows.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/driver/windows.c b/driver/windows.c index 633593b..5854c49 100644 --- a/driver/windows.c +++ b/driver/windows.c @@ -1,5 +1,5 @@ /* windows.c --- turning the screen black; dealing with visuals, virtual roots. - * xscreensaver, Copyright (c) 1991-2019 Jamie Zawinski <jwz@jwz.org> + * xscreensaver, Copyright (c) 1991-2020 Jamie Zawinski <jwz@jwz.org> * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -1490,6 +1490,7 @@ resize_screensaver_window (saver_info *si) if (ssi->cmap) XInstallColormap (si->dpy, ssi->cmap); XMapRaised (si->dpy, ssi->screensaver_window); + XSync (si->dpy, False); if (! ssi->pid) spawn_screenhack (ssi); @@ -1613,6 +1614,7 @@ raise_window (saver_info *si, if (!dont_clear || ssi->stderr_overlay_window) clear_stderr (ssi); XMapRaised (si->dpy, ssi->screensaver_window); + XSync (si->dpy, False); #ifdef HAVE_MIT_SAVER_EXTENSION if (ssi->server_mit_saver_window && window_exists_p (si->dpy, ssi->server_mit_saver_window)) @@ -1865,15 +1867,18 @@ unblank_screen (saver_info *si) { Window focus = 0; int revert_to; + XSync (si->dpy, False); XGetInputFocus (si->dpy, &focus, &revert_to); if (focus && focus != PointerRoot && focus != None) { + XErrorHandler old_handler = XSetErrorHandler (BadWindow_ehandler); XWindowAttributes xgwa; xgwa.colormap = 0; - XGetWindowAttributes (si->dpy, focus, &xgwa); - if (xgwa.colormap && + if (XGetWindowAttributes (si->dpy, focus, &xgwa) && + xgwa.colormap && xgwa.colormap != DefaultColormapOfScreen (xgwa.screen)) XInstallColormap (si->dpy, xgwa.colormap); + XSetErrorHandler (old_handler); } } |