mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-05-05 01:48:02 +02:00
Xi: Don't emit a TouchEnd event to a frozen device
EmitTouchEnd calls DeliverTouchEvents directly instead of through
public.processInputProc. If a device is frozen, the TouchEnd is
processed while the device is waiting for a XAllowEvents and thus ends the
touch point (and the grab) before the client decided what to do with it. In
the case of ReplayPointer, this loses the event.
This is a hack, but making EmitTouchEnd use processInputProc breaks
approximately everything, especially the touch point is cleaned up during
ProcessTouchEvents. Working around that is a bigger hack than this.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 0eb9390f60)
This commit is contained in:
parent
c8a4835806
commit
4dac09796c
1 changed files with 4 additions and 0 deletions
|
|
@ -1067,6 +1067,10 @@ EmitTouchEnd(DeviceIntPtr dev, TouchPointInfoPtr ti, int flags, XID resource)
|
|||
{
|
||||
InternalEvent event;
|
||||
|
||||
/* We're not processing a touch end for a frozen device */
|
||||
if (dev->deviceGrab.sync.frozen)
|
||||
return;
|
||||
|
||||
flags |= TOUCH_CLIENT_ID;
|
||||
if (ti->emulate_pointer)
|
||||
flags |= TOUCH_POINTER_EMULATED;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue