diff options
author | Peter Hutterer <peter@cs.unisa.edu.au> | 2007-03-08 17:17:23 +1030 |
---|---|---|
committer | Peter Hutterer <peter@cs.unisa.edu.au> | 2007-03-08 17:17:23 +1030 |
commit | ceca5670fee99b5feceaa2453f1ac32d1bfe7dcd (patch) | |
tree | 61b135c3d494c4588cacbcd05329032da92ef82f /xkb/xkbEvents.c | |
parent | 537bc2ead4d154552cbdc3a19e335f82af63792c (diff) |
dix: Each device needs to differ between a core grab and an XI grab,
otherwise a Xi grab may overwrite or release a core grab.
Replace grab and associates with coreGrab and deviceGrab structures,
adjust rest of dix/Xi/etc to compile.
xfree86: Don't check for core devices, we'll have the virtual ones anyway.
If we check, the first mouse device is duplicated and sends
double events.
Diffstat (limited to 'xkb/xkbEvents.c')
-rw-r--r-- | xkb/xkbEvents.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/xkb/xkbEvents.c b/xkb/xkbEvents.c index 139221f3f..eeb9dec7c 100644 --- a/xkb/xkbEvents.c +++ b/xkb/xkbEvents.c @@ -808,6 +808,7 @@ XkbFilterEvents(ClientPtr pClient,int nEvents,xEvent *xE) int i, button_mask; DeviceIntPtr pXDev = (DeviceIntPtr)LookupKeyboardDevice(); XkbSrvInfoPtr xkbi; +GrabInfoPtr grabinfo; xkbi= pXDev->key->xkbInfo; if ( pClient->xkbClientFlags & _XkbClientInitialized ) { @@ -831,7 +832,9 @@ XkbSrvInfoPtr xkbi; (_XkbIsReleaseEvent(xE[0].u.u.type)) ) { return False; } - if ((pXDev->grab != NullGrab) && pXDev->fromPassiveGrab && + /* just coreGrab is fine, pXDev is inputInfo.keyboard (see above) */ + if ((pXDev->coreGrab.grab != NullGrab) + && pXDev->coreGrab.fromPassiveGrab && ((xE[0].u.u.type==KeyPress)||(xE[0].u.u.type==KeyRelease))) { register unsigned state,flags; |