51 lines
1.8 KiB
Diff
51 lines
1.8 KiB
Diff
|
From ef54bd89b17f3dd1f854435339f66d357121c64c Mon Sep 17 00:00:00 2001
|
||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||
|
Date: Wed, 24 Jul 2013 11:50:00 +1000
|
||
|
Subject: [PATCH 1/3] 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>
|
||
|
(cherry picked from commit 4fb686d6a6777950f0e0d55b848cd2af4cbad372)
|
||
|
---
|
||
|
dix/touch.c | 3 +--
|
||
|
include/inputstr.h | 2 +-
|
||
|
2 files changed, 2 insertions(+), 3 deletions(-)
|
||
|
|
||
|
diff --git a/dix/touch.c b/dix/touch.c
|
||
|
index a4b6d7e..a7ea213 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);
|
||
|
diff --git a/include/inputstr.h b/include/inputstr.h
|
||
|
index 85be885..2da72c1 100644
|
||
|
--- a/include/inputstr.h
|
||
|
+++ b/include/inputstr.h
|
||
|
@@ -195,7 +195,7 @@ typedef struct _GrabRec {
|
||
|
unsigned keyboardMode:1;
|
||
|
unsigned pointerMode:1;
|
||
|
enum InputLevel grabtype;
|
||
|
- CARD8 type; /* event type */
|
||
|
+ CARD8 type; /* event type for passive grabs, 0 for active grabs */
|
||
|
DetailRec modifiersDetail;
|
||
|
DeviceIntPtr modifierDevice;
|
||
|
DetailRec detail; /* key or button */
|
||
|
--
|
||
|
1.8.2.1
|
||
|
|