---- ion3.orig/ioncore/rootwin.c
-+++ ion3/ioncore/rootwin.c
-@@ -58,10 +58,11 @@
- static char msg[128], request[64], num[32];
+Wed Jul 23 17:54:17 BST 2008 Tuomo Valkonen <tuomov@iki.fi>
+ * More BadMatch ignore
+diff -rN -u old-ion-3plus/ioncore/rootwin.c new-ion-3plus/ioncore/rootwin.c
+--- old-ion-3plus/ioncore/rootwin.c 2008-07-24 21:28:52.000000000 +0100
++++ new-ion-3plus/ioncore/rootwin.c 2008-07-24 21:28:52.000000000 +0100
+@@ -59,9 +59,13 @@
/* Just ignore bad window and similar errors; makes the rest of
-- * the code simpler.
-+ * the code simpler. Due to a Xorg bug, window lookups may fail
-+ * with BadMatch instead of BadWindow.
+ * the code simpler.
++ *
++ * Apparently XGetWindowProperty can return BadMatch on a race
++ * condition where the server is already reusing the XID for a
++ * non-window drawable, so let's just ignore BadMatch entirely...
*/
if((ev->error_code==BadWindow ||
- (ev->error_code==BadMatch && ev->request_code==X_SetInputFocus) ||
-+ ev->error_code==BadMatch ||
++ (ev->error_code==BadMatch /*&& ev->request_code==X_SetInputFocus*/) ||
(ev->error_code==BadDrawable && ev->request_code==X_GetGeometry)) &&
ignore_badwindow)
return 0;
+