[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#508126: xine-ui: ctrl/shift key press emulation implementation broken



On Sat, 2009-01-03 at 18:00 +0100, Julien Cristau wrote:
> On Fri, Jan  2, 2009 at 15:30:01 +0000, Ben Hutchings wrote:
> 
> > #508126: x11-utils: xprop -spy does not handle destruction properly
> > 
> the xprop patch looks reasonable afaict, so go ahead and NMU.  somebody
> should also forward that patch to bugs.freedesktop.org.

Thanks, done.  The NMU-diff follows.

Ben.

diff -Nru x11-utils-7.3+2/debian/changelog x11-utils-7.3+2+nmu1/debian/changelog
--- x11-utils-7.3+2/debian/changelog	2008-05-30 15:21:43.000000000 +0100
+++ x11-utils-7.3+2+nmu1/debian/changelog	2009-01-03 22:22:41.000000000 +0000
@@ -1,3 +1,11 @@
+x11-utils (7.3+2+nmu1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Make xprop -spy exit cleanly when target window is destroyed
+    (closes: #508126)
+
+ -- Ben Hutchings <ben@decadent.org.uk>  Sat, 03 Jan 2009 22:22:40 +0000
+
 x11-utils (7.3+2) unstable; urgency=low
 
   * Relax Replaces on xutils and xbase-clients to allow further updates.
diff -Nru x11-utils-7.3+2/debian/patches/05_xprop_spy_exit_on_destroy.diff x11-utils-7.3+2+nmu1/debian/patches/05_xprop_spy_exit_on_destroy.diff
--- x11-utils-7.3+2/debian/patches/05_xprop_spy_exit_on_destroy.diff	1970-01-01 01:00:00.000000000 +0100
+++ x11-utils-7.3+2+nmu1/debian/patches/05_xprop_spy_exit_on_destroy.diff	2009-01-03 22:21:48.000000000 +0000
@@ -0,0 +1,50 @@
+This patch by Ben Hutchings <ben@decadent.org.uk>.
+
+xprop -spy should exit cleanly when the target window is destroyed.
+The current behaviour is that it sometimes dies with a BadWindow error
+and sometimes hangs around after the target has been destroyed.
+
+We fix this by listening for destroy events but also catching
+BadWindow errors (and BadMatch, which may sometimes be received
+instead of BadWindow).  We print a new-line before exiting from the
+error handler, since we may have generated partial output for a
+property change.
+
+--- x11-utils.orig/xprop/xprop.c
++++ x11-utils/xprop/xprop.c
+@@ -1596,6 +1596,19 @@
+ 
+ static int spy = 0;
+ 
++static int (*old_error_handler)(Display *dpy, XErrorEvent *ev);
++
++static int spy_error_handler(Display *dpy, XErrorEvent *ev)
++{
++    if (ev->error_code == BadWindow || ev->error_code == BadMatch) {
++	/* Window was destroyed */
++	puts("");
++	exit(0);
++    }
++
++    return old_error_handler(dpy, ev);
++}
++
+ int
+ main (int argc, char **argv)
+ {
+@@ -1738,9 +1750,14 @@
+ 	XEvent event;
+ 	const char *format, *dformat;
+ 	
+-	XSelectInput(dpy, target_win, PropertyChangeMask);
++	XSelectInput(dpy, target_win, PropertyChangeMask | StructureNotifyMask);
++	old_error_handler = XSetErrorHandler(spy_error_handler);
+ 	for (;;) {
+ 	    XNextEvent(dpy, &event);
++	    if (event.type == DestroyNotify)
++		break;
++	    if (event.type != PropertyNotify)
++		continue;
+ 	    format = dformat = NULL;
+ 	    if (props) {
+ 		int i;
diff -Nru x11-utils-7.3+2/debian/patches/series x11-utils-7.3+2+nmu1/debian/patches/series
--- x11-utils-7.3+2/debian/patches/series	2008-02-01 00:21:49.000000000 +0000
+++ x11-utils-7.3+2+nmu1/debian/patches/series	2009-01-03 22:22:05.000000000 +0000
@@ -1,2 +1,3 @@
 02_xev_flush_standard_output.diff
 04_xlsfonts_do_not_spew_usage_on_connection_error.diff -p0
+05_xprop_spy_exit_on_destroy.diff
--- END ---

-- 
Ben Hutchings
The world is coming to an end.  Please log off.

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: