summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2012-10-31 19:32:57 +0100
committerPeter Hutterer <peter.hutterer@who-t.net>2012-11-07 09:59:20 +1000
commit2f99b38747e1a74cade10a7a45cee5eaec8ddea7 (patch)
tree17bcd503df1a2a5e82a05540b2f8bd84f0aa553f
parent10d9cd36b4966c8e3ea8e791152e1af166224ee8 (diff)
Xi: Update the device after delivering the emulated pointer event(#56558)
Ensure emulated pointer events contain the state that applies before the event was processed, so the device state must be updated after delivering such emulated events. Co-authored-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Carlos Garnacho <carlosg@gnome.org> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 863f32c930d71073ee5f78452b78bd459d024867)
-rw-r--r--Xi/exevents.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/Xi/exevents.c b/Xi/exevents.c
index 4cbeb3796..5cf873c6e 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -1568,9 +1568,6 @@ ProcessTouchEvent(InternalEvent *ev, DeviceIntPtr dev)
else
touchid = ev->device_event.touchid;
- if (emulate_pointer)
- UpdateDeviceState(dev, &ev->device_event);
-
if (type == ET_TouchBegin) {
ti = TouchBeginTouch(dev, ev->device_event.sourceid, touchid,
emulate_pointer);
@@ -1617,6 +1614,7 @@ ProcessTouchEvent(InternalEvent *ev, DeviceIntPtr dev)
* events which _only_ emulate motion just work normally */
if (emulate_pointer && ev->any.type != ET_TouchUpdate)
DeliverEmulatedMotionEvent(dev, ti, ev);
+
if (emulate_pointer && IsMaster(dev))
CheckMotion(&ev->device_event, dev);
@@ -1641,6 +1639,9 @@ ProcessTouchEvent(InternalEvent *ev, DeviceIntPtr dev)
if (ev->any.type == ET_TouchEnd)
TouchEndTouch(dev, ti);
}
+
+ if (emulate_pointer)
+ UpdateDeviceState(dev, &ev->device_event);
}
/**