xserver: Branch 'server-1.4-branch'

Daniel Stone daniels at kemper.freedesktop.org
Fri Dec 28 14:13:57 PST 2007


 include/xkbsrv.h |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

New commits:
commit 60144ac814ee26e151186f7c93cb1a273468d497
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Wed Dec 19 16:20:36 2007 +1030

    include: never overwrite realInputProc with enqueueInputProc. Bug #13511
    
    In some cases (triggered by a key repeat during a sync grab) XKB unwrapping
    can overwrite the device's realInputProc with the enqueueInputProc. When the
    grab is released and the events are replayed, we end up in an infinite loop.
    Each event is replayed and in replaying pushed to the end of the queue again.
    
    This fix is a hack only. It ensures that the realInputProc is never
    overwritten with the enqueueInputProc.
    
    This fixes Bug #13511 (https://bugs.freedesktop.org/show_bug.cgi?id=13511)
    (cherry picked from commit eace88989c3b65d5c20e9f37ea9b23c7c8e19335)
    (cherry picked from commit 50e80c39870adfdc84fdbc00dddf1362117ad443)

diff --git a/include/xkbsrv.h b/include/xkbsrv.h
index 167dbec..9174eb6 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;
 


More information about the xorg-commit mailing list