summaryrefslogtreecommitdiff
path: root/dix
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2013-07-24 11:50:00 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2013-07-24 11:50:00 +1000
commit4fb686d6a6777950f0e0d55b848cd2af4cbad372 (patch)
tree7be3d4a96545486b8ef6adc3efffd145d8d605f7 /dix
parent21ea7ebb6a1ad56f3060747af0df235ca6ff27fa (diff)
dix: check the xi2mask, not the grab type for touch listeners
grab->type is only non-zero for passive grabs. We're checking an active grab here, so we need to check if the touch mask is set on the grab. Test case: grab the device, then start two simultaneous touches. The grabbing client won't see the second touchpoints because grab->type is 0 and the second touch is not an emulating pointer. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'dix')
-rw-r--r--dix/touch.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/dix/touch.c b/dix/touch.c
index a4b6d7eea..a7ea213ba 100644
--- a/dix/touch.c
+++ b/dix/touch.c
@@ -895,8 +895,7 @@ TouchAddActiveGrabListener(DeviceIntPtr dev, TouchPointInfoPtr ti,
if (!ti->emulate_pointer &&
grab->grabtype == XI2 &&
- (grab->type != XI_TouchBegin && grab->type != XI_TouchEnd &&
- grab->type != XI_TouchUpdate))
+ !xi2mask_isset(grab->xi2mask, dev, XI_TouchBegin))
return;
TouchAddGrabListener(dev, ti, ev, grab);