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

xorg-server: Changes to 'debian-unstable'



 debian/changelog                         |    4 ++-
 debian/patches/08_xkb_infinite_loop.diff |   34 +++++++++++++++++++++++++++++++
 debian/patches/series                    |    1 
 3 files changed, 38 insertions(+), 1 deletion(-)

New commits:
commit e8e1a1e781d52ca3bbe804b0cb0c9b5d6d42b421
Author: Julien Cristau <jcristau@debian.org>
Date:   Fri Dec 7 21:12:40 2007 +0100

    Add patch 08_xkb_infinite_loop.diff from upstream bug#13511
    
    Papers over an infinite loop in event processing (closes: #451989).

diff --git a/debian/changelog b/debian/changelog
index cb16609..251daca 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,8 +6,10 @@ xorg-server (2:1.4.1~git20071119-2) UNRELEASED; urgency=low
   * Cherry-pick commit f30abe30 from master: edid quirk for MAX 0x77e monitor.
   * Add patch 44_preferredmode_infinite_loop.diff from upstream git: fixes an
     infinite loop when PreferredMode is used in xorg.conf.
+  * Add patch 08_xkb_infinite_loop.diff from upstream bug#13511: papers over
+    an infinite loop in event processing (closes: #451989).
 
- -- Julien Cristau <jcristau@debian.org>  Sun, 02 Dec 2007 00:56:53 +0100
+ -- Julien Cristau <jcristau@debian.org>  Fri, 07 Dec 2007 21:09:24 +0100
 
 xorg-server (2:1.4.1~git20071119-1) unstable; urgency=low
 
diff --git a/debian/patches/08_xkb_infinite_loop.diff b/debian/patches/08_xkb_infinite_loop.diff
new file mode 100644
index 0000000..efe3f28
--- /dev/null
+++ b/debian/patches/08_xkb_infinite_loop.diff
@@ -0,0 +1,34 @@
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=451989
+https://bugs.freedesktop.org/show_bug.cgi?id=13511
+------ Comment  #1 From Peter Hutterer  2007-12-04 22:45:39 PST  [reply] -------
+
+(In reply to comment #0)
+> When some window is opened by some grabbed key, grabbing all keys and they
+> destroyed (like the window ratpoison opened uppon C-t :, or the window icewm
+> shows when doing Alt-Tab), the xserver is caught in an endless loop within
+> PlayReleasedEvents in dix/events.c.
+
+interesting bug... tricky to track down. 
+
+The bug only occurs if Xkb triggers an autorepeat. In this case,
+XkbHandleActions overwrites dev->public.realInputProc with EnqueueEvent. When
+the device is unfrozen, the realInputProc is written back to the
+processInputProc and the whole thing craps out.
+
+Here's a preliminary hack to fix it. It stops the loop occuring (tested with
+ratpoison) but I'm not sure what other implications it has. It most probably is
+not the correct solution.
+
+diff --git a/include/xkbsrv.h b/include/xkbsrv.h
+index 167dbec..9f7f0d6 100644
+--- a/include/xkbsrv.h
++++ b/include/xkbsrv.h
+@@ -258,7 +258,8 @@ typedef struct
+ 	    device->public.processInputProc = proc; \
+ 	oldprocs->processInputProc = \
+ 	oldprocs->realInputProc = device->public.realInputProc; \
+-	device->public.realInputProc = proc; \
++	if (proc != device->public.enqueueInputProc) \
++	    device->public.realInputProc = proc; \
+ 	oldprocs->unwrapProc = device->unwrapProc; \
+ 	device->unwrapProc = unwrapproc;
diff --git a/debian/patches/series b/debian/patches/series
index 08a6b93..1e668fd 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -5,6 +5,7 @@
 05_kill_type1.diff
 06_use_proc_instead_of_sysfs_for_pci_domains.diff
 07_autoconfig_screen_with_device_section.diff
+08_xkb_infinite_loop.diff
 10_dont_look_in_home_for_config.diff -p0
 12_bgPixel_fix_64bit_issue.diff
 13_debian_add_xkbpath_env_variable.diff



Reply to: