summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@redhat.com>2008-11-26 12:20:00 +1000
committerPeter Hutterer <peter.hutterer@redhat.com>2008-12-01 08:16:57 +1000
commit862d5b2dc55e678921b3db710b2821b66d55ea2f (patch)
tree453cdab03afe6a3b030d19a7d44464adc9728269
parent41471afa7774a6598344ea7b488f993a0bd32e7f (diff)
xkb: don't attempt to filter events for devices without key classes.
Reported by Magnus Kessler. Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
-rw-r--r--xkb/xkbEvents.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/xkb/xkbEvents.c b/xkb/xkbEvents.c
index 9d8ec0df6..4d3debba7 100644
--- a/xkb/xkbEvents.c
+++ b/xkb/xkbEvents.c
@@ -826,7 +826,8 @@ XkbSrvInfoPtr xkbi;
pXDev = inputInfo.keyboard;
}
- xkbi= pXDev->key->xkbInfo;
+ xkbi= (pXDev->key) ? pXDev->key->xkbInfo : NULL;
+
if ( pClient->xkbClientFlags & _XkbClientInitialized ) {
if ((xkbDebugFlags&0x10)&&
((xE[0].u.u.type==KeyPress)||(xE[0].u.u.type==KeyRelease)||
@@ -848,6 +849,10 @@ XkbSrvInfoPtr xkbi;
(_XkbIsReleaseEvent(xE[0].u.u.type)) ) {
return False;
}
+
+ if (!xkbi)
+ return True;
+
if ((pXDev->deviceGrab.grab != NullGrab)
&& pXDev->deviceGrab.fromPassiveGrab &&
((xE[0].u.u.type==KeyPress)||(xE[0].u.u.type==KeyRelease)||
@@ -891,6 +896,9 @@ XkbSrvInfoPtr xkbi;
else {
register CARD8 type;
+ if (!xkbi)
+ return True;
+
for (i=0;i<nEvents;i++) {
type= xE[i].u.u.type;
if ((xkbDebugFlags&0x4)&&