Skip to content
Browse files

Fixed bug 3410 - SDL_WINDOW_HIDDEN flag is inaccurate.

Jason Wyatt

After hiding the window, SDL_WINDOW_HIDDEN/SDL_WINDOW_SHOWN flags on a window are correctly updated. However on the next SDL_PumpEvents, they are set incorrectly.

This appears to be because X11_GetNetWMState does not check whether the _NET_WM_STATE property exists (it shouldn't on unmapped windows, see This results in an empty list of atoms for the state, which would imply that the window is not hidden.

(Seen on Fedora 24, Gnome)


Dan Ginsburg

More details on my proposed patch: I am on Kubuntu 16.04.2.  I ran into this same bug, but with Jason's patch I found that actualType != None was true so the SDL_WINDOW_HIDDEN would still not be set.  My fix instead is to explicitly check for whether the window is unmapped rather than relying on the returned values in XGetWindowProperty.
  • Loading branch information
slouken committed Jul 20, 2017
1 parent 36998b8 commit 177f19aff097ab943efd2d86353b26639444b16e
Showing with 13 additions and 0 deletions.
  1. +13 −0 src/video/x11/SDL_x11window.c
@@ -225,6 +225,19 @@ X11_GetNetWMState(_THIS, Window xwindow)
if (fullscreen == 1) {

/* If the window is unmapped, numItems will be zero and _NET_WM_STATE_HIDDEN
* will not be set. Do an additional check to see if the window is unmapped
* and mark it as SDL_WINDOW_HIDDEN if it is.
XWindowAttributes attr;
X11_XGetWindowAttributes(videodata->display, xwindow, &attr);
if (attr.map_state == IsUnmapped) {

0 comments on commit 177f19a

Please sign in to comment.