diff options
author | Antoine Jacoutot <ajacoutot@cvs.openbsd.org> | 2013-05-19 07:20:39 +0000 |
---|---|---|
committer | Antoine Jacoutot <ajacoutot@cvs.openbsd.org> | 2013-05-19 07:20:39 +0000 |
commit | cd56f231c0a09a174e928330826275700c5cc149 (patch) | |
tree | fcb8c4b691873055d3d6aca400f3add2cc79c695 /xserver | |
parent | 0327513c7919c02f3e1cf3fea27a911c8a4c7a63 (diff) |
Merge the following commit from upstream:
Touch: Fix duplicate TouchBegin selection with virtual devices
http://cgit.freedesktop.org/xorg/xserver/commit/?id=314776eb369ca2e438907795ae030dd743c281fc
This fixes gtk+3 applications crashing with 'BadImplementation' error.
ok matthieu@
Diffstat (limited to 'xserver')
-rw-r--r-- | xserver/Xi/xiselectev.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/xserver/Xi/xiselectev.c b/xserver/Xi/xiselectev.c index 43a67c833..c71dcc0db 100644 --- a/xserver/Xi/xiselectev.c +++ b/xserver/Xi/xiselectev.c @@ -180,8 +180,14 @@ ProcXISelectEvents(ClientPtr client) if (CLIENT_ID(iclient->resource) == client->index) continue; - dixLookupDevice(&dummy, evmask->deviceid, serverClient, - DixReadAccess); + if (evmask->deviceid == XIAllDevices) + dummy = inputInfo.all_devices; + else if (evmask->deviceid == XIAllMasterDevices) + dummy = inputInfo.all_master_devices; + else + dixLookupDevice(&dummy, evmask->deviceid, serverClient, + DixReadAccess); + if (!dummy) return BadImplementation; /* this shouldn't happen */ |