diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/events.c | 7 | ||||
-rw-r--r-- | src/manage.c | 5 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/events.c b/src/events.c index b75f055..26edccb 100644 --- a/src/events.c +++ b/src/events.c @@ -102,6 +102,7 @@ unmap_notify (XEvent *ev) if (frame) cleanup_frame (frame); if (frame == rp_current_frame) set_active_frame (frame); + withdraw_window (win); break; } @@ -557,6 +558,10 @@ colormap_notify (XEvent *ev) { XWindowAttributes attr; + /* SDL sets the colormap just before destroying the window, so + ignore BadWindow errors. */ + ignore_badwindow++; + XGetWindowAttributes (dpy, win->w, &attr); win->colormap = attr.colormap; @@ -564,6 +569,8 @@ colormap_notify (XEvent *ev) { XInstallColormap (dpy, win->colormap); } + + ignore_badwindow--; } } diff --git a/src/manage.c b/src/manage.c index b379069..11fbfd9 100644 --- a/src/manage.c +++ b/src/manage.c @@ -530,10 +530,11 @@ withdraw_window (rp_window *win) remove_from_list (win); append_to_list (win, rp_unmapped_window_sentinel); + ignore_badwindow++; + XRemoveFromSaveSet (dpy, win->w); set_state (win, WithdrawnState); - - ignore_badwindow++; XSync (dpy, False); + ignore_badwindow--; } |