From 96db7a048da816799b01dae3fd1a9ac05d14c2c1 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 28 Sep 2012 00:57:47 -0700 Subject: [PATCH] Only map/unmap if the window isn't already in the correct state. --- src/video/x11/SDL_x11window.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/video/x11/SDL_x11window.c b/src/video/x11/SDL_x11window.c index b4d081d1e..0763d5a96 100644 --- a/src/video/x11/SDL_x11window.c +++ b/src/video/x11/SDL_x11window.c @@ -809,12 +809,14 @@ X11_ShowWindow(_THIS, SDL_Window * window) Display *display = data->videodata->display; XEvent event; - XMapRaised(display, data->xwindow); - /* Blocking wait for "MapNotify" event. - * We use XIfEvent because XWindowEvent takes a mask rather than a type, - * and XCheckTypedWindowEvent doesn't block */ - XIfEvent(display, &event, &isMapNotify, (XPointer)&data->xwindow); - XFlush(display); + if (!X11_IsWindowMapped(_this, window)) { + XMapRaised(display, data->xwindow); + /* Blocking wait for "MapNotify" event. + * We use XIfEvent because XWindowEvent takes a mask rather than a type, + * and XCheckTypedWindowEvent doesn't block */ + XIfEvent(display, &event, &isMapNotify, (XPointer)&data->xwindow); + XFlush(display); + } } void @@ -824,10 +826,12 @@ X11_HideWindow(_THIS, SDL_Window * window) Display *display = data->videodata->display; XEvent event; - XUnmapWindow(display, data->xwindow); - /* Blocking wait for "UnmapNotify" event */ - XIfEvent(display, &event, &isUnmapNotify, (XPointer)&data->xwindow); - XFlush(display); + if (X11_IsWindowMapped(_this, window)) { + XUnmapWindow(display, data->xwindow); + /* Blocking wait for "UnmapNotify" event */ + XIfEvent(display, &event, &isUnmapNotify, (XPointer)&data->xwindow); + XFlush(display); + } } void