summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/events.c7
-rw-r--r--src/manage.c5
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--;
}