xserver: Branch 'mpx'

Peter Hutterer whot at kemper.freedesktop.org
Fri Jan 12 06:42:28 EET 2007


 dix/cursor.c |    1 -
 mi/mieq.c    |    8 ++++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

New commits:
diff-tree ba547d4f6a2707f51f0d826389d2d418fb62367a (from 5e2f8dee6331645fcbd2734c43698eb4f9c5b116)
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Fri Jan 12 14:42:02 2007 +1030

    mi:     Quick fix to stop segfault on non-core keyboards.

diff --git a/dix/cursor.c b/dix/cursor.c
index b58a7bf..cf515c1 100644
--- a/dix/cursor.c
+++ b/dix/cursor.c
@@ -117,7 +117,6 @@ FreeCursor(pointer value, XID cid)
     ScreenPtr	pscr;
     DeviceIntPtr pDev; 
 
-    MPXDBG("freecursor refcount %d\n", pCurs->refcnt);
     if ( --pCurs->refcnt != 0)
 	return(Success);
 
diff --git a/mi/mieq.c b/mi/mieq.c
index 0744e6c..b336277 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -231,6 +231,14 @@ mieqProcessInputEvents()
                 dev = e->pDev;
             }
 
+            /* FIXME: Keyboard extension devices do not have devPrivates
+             * initialized, resulting in a segfault in XkbHandleActions. */
+            if (e->event[0].u.u.type == DeviceKeyPress || 
+                    e->event[0].u.u.type == DeviceKeyRelease ||
+                    e->event[0].u.u.type == KeyPress ||
+                    e->event[0].u.u.type == KeyRelease)
+                e->pDev = dev = inputInfo.keyboard;
+
             /* MPX devices send both core and Xi events. 
              * Use dev to get the correct processing function but supply
              *  e->pDev to pass the correct device 



More information about the xorg-commit mailing list