+ion3 (20080707-3) unstable; urgency=low
+
+ * Replaced 101_ignore-missing-keys.diff and 102_ignore-bad-match.diff
+ with patches from upstream repository (ion-3plus)
+
+ -- Ben Hutchings <ben@decadent.org.uk> Thu, 24 Jul 2008 21:30:19 +0100
+
ion3 (20080707-2) unstable; urgency=low
* Suppressed warnings for missing keys (101_ignore-missing-keys.diff)
---- ion3.orig/ioncore/conf-bindings.c
-+++ ion3/ioncore/conf-bindings.c
-@@ -94,7 +94,7 @@
+Wed Jul 23 18:30:48 BST 2008 Tuomo Valkonen <tuomov@iki.fi>
+ * Do not log complaints about keysym to keycode conversion failure.
+diff -rN -u old-ion-3plus/ioncore/conf-bindings.c new-ion-3plus/ioncore/conf-bindings.c
+--- old-ion-3plus/ioncore/conf-bindings.c 2008-07-24 21:29:07.000000000 +0100
++++ new-ion-3plus/ioncore/conf-bindings.c 2008-07-24 21:29:07.000000000 +0100
+@@ -20,6 +20,7 @@
+ #include <libextl/extl.h>
+ #include "conf-bindings.h"
+ #include "bindmaps.h"
++#include "ioncore.h"
+
+
+ /*{{{ parse_keybut */
+@@ -94,7 +95,8 @@
break;
}
if(XKeysymToKeycode(ioncore_g.dpy, keysym)==0){
- warn_obj(str, TR("Could not convert keysym to keycode."));
-+ /* It is not an error for a keymap to lack some keys */
++ ioncore_warn_nolog("%s: %s", str,
++ TR("Could not convert keysym to keycode."));
break;
}
*ksb_ret=keysym;
+diff -rN -u old-ion-3plus/ioncore/ioncore.c new-ion-3plus/ioncore/ioncore.c
+--- old-ion-3plus/ioncore/ioncore.c 2008-07-24 21:29:07.000000000 +0100
++++ new-ion-3plus/ioncore/ioncore.c 2008-07-24 21:29:07.000000000 +0100
+@@ -22,6 +22,7 @@
+ #ifndef CF_NO_GETTEXT
+ #include <libintl.h>
+ #endif
++#include <stdarg.h>
+
+ #include <libtu/util.h>
+ #include <libtu/optparser.h>
+@@ -99,12 +100,17 @@
+ /*{{{ warn_nolog */
+
+
+-void ioncore_warn_nolog(const char *str)
++void ioncore_warn_nolog(const char *str, ...)
+ {
+- fprintf(stderr, "%s: %s\n", libtu_progname(), str);
++ va_list args;
++
++ va_start(args, str);
++ fprintf(stderr, "%s: ", libtu_progname());
++ vfprintf(stderr, str, args);
++ fprintf(stderr, "\n");
++ va_end(args);
+ }
+
+-
+ /*}}}*/
+
+
+diff -rN -u old-ion-3plus/ioncore/ioncore.h new-ion-3plus/ioncore/ioncore.h
+--- old-ion-3plus/ioncore/ioncore.h 2008-07-24 21:29:07.000000000 +0100
++++ new-ion-3plus/ioncore/ioncore.h 2008-07-24 21:29:07.000000000 +0100
+@@ -28,6 +28,6 @@
+ extern WHook *ioncore_snapshot_hook;
+ extern WHook *ioncore_deinit_hook;
+
+-extern void ioncore_warn_nolog(const char *str);
++extern void ioncore_warn_nolog(const char *str, ...);
+
+ #endif /* ION_IONCORE_IONCORE_H */
+
---- 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;
+