[PATCH 09/10] Save physical button state for emulated touches too
Chase Douglas
chase.douglas at canonical.com
Tue Apr 17 16:33:28 PDT 2012
The physical button state is reported by XIQueryPointer for clients
supporting XI 2.1 and earlier.
Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
---
Xi/exevents.c | 14 ++++++++++++--
include/inputstr.h | 3 ++-
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/Xi/exevents.c b/Xi/exevents.c
index 90b7c4d..724b228 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -951,7 +951,12 @@ UpdateDeviceState(DeviceIntPtr device, DeviceEvent *event)
BUG_WARN(!b || !v);
BUG_WARN(!t);
- if (!b || !t || !b->map[key])
+ if (!b || !t)
+ return DONT_PROCESS;
+
+ SetBit(t->down, key);
+
+ if (!b->map[key])
return DONT_PROCESS;
if (!(event->flags & TOUCH_POINTER_EMULATED) ||
@@ -966,7 +971,12 @@ UpdateDeviceState(DeviceIntPtr device, DeviceEvent *event)
BUG_WARN(!b || !v);
BUG_WARN(!t);
- if (!b || !t || t->buttonsDown <= 0 || !b->map[key])
+ if (!b || !t)
+ return DONT_PROCESS;
+
+ ClearBit(t->down, key);
+
+ if (t->buttonsDown <= 0 || !b->map[key])
return DONT_PROCESS;
if (!(event->flags & TOUCH_POINTER_EMULATED))
diff --git a/include/inputstr.h b/include/inputstr.h
index 5a38924..31c1e78 100644
--- a/include/inputstr.h
+++ b/include/inputstr.h
@@ -342,7 +342,8 @@ typedef struct _TouchClassRec {
CARD8 mode; /* ::XIDirectTouch, XIDependentTouch */
/* for pointer-emulation */
CARD8 buttonsDown; /* number of buttons down */
- unsigned short state; /* logical button state */
+ CARD8 down[DOWN_LENGTH]; /* physical emulated button state */
+ unsigned short state; /* logical emulated button state */
Mask motionMask;
} TouchClassRec;
--
1.7.9.1
More information about the xorg-devel
mailing list