diff options
author | Chase Douglas <chase.douglas@canonical.com> | 2012-04-10 17:12:41 -0700 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2012-04-26 13:33:04 +1000 |
commit | fb01dfb55a6a718affa9354c384823e462ee784a (patch) | |
tree | d08b6b0f29368b3738bbfa1860a07360e8e226e5 | |
parent | b56c1f95bb2d22996651e0a5ca6b6b0e71710a7b (diff) |
Update event type when delivering end event to a pointer listener
Just like when we deliver to a touch listener, we must convert a touch
end event to an update event for further clients. This also ensures that
the touch record is not deleted at the end of ProcessTouchEvent().
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 163b0f375d73c05873fb341652de3ed347337828)
-rw-r--r-- | Xi/exevents.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/Xi/exevents.c b/Xi/exevents.c index 80ddfcc7c..fc43f0220 100644 --- a/Xi/exevents.c +++ b/Xi/exevents.c @@ -1757,6 +1757,13 @@ DeliverTouchEndEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev, listener->type == LISTENER_POINTER_GRAB) { rc = DeliverTouchEmulatedEvent(dev, ti, ev, listener, client, win, grab, xi2mask); + + if (ti->num_listeners > 1) { + ev->any.type = ET_TouchUpdate; + ev->device_event.flags |= TOUCH_PENDING_END; + ti->pending_finish = TRUE; + } + goto out; } |