[PATCH] Xi: call UpdateDeviceState() even when the client is missing
Peter Hutterer
peter.hutterer at who-t.net
Tue Jun 16 20:12:04 PDT 2015
On Tue, Jun 16, 2015 at 01:55:49PM +0300, Alexander Volkov wrote:
> The client window can be closed in the middle of a touch sequence,
> e.g. Qt 4 closes popup windows on MousePress and Qt 5.5 will do it
> on TouchBegin. In this case the state of mouse buttons will not be
> updated on TouchEnd because ProcessTouchEvent() calls UpdateDeviceState()
> only when the event has been sent to the client. It results in a
> stuck left mouse button.
>
> This patch adds a call to UpdateDeviceState() in case the client
> can't be found.
>
> Signed-off-by: Alexander Volkov <a.volkov at rusbitech.ru>
> ---
> Xi/exevents.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/Xi/exevents.c b/Xi/exevents.c
> index 1c586d0..32e4a2c 100644
> --- a/Xi/exevents.c
> +++ b/Xi/exevents.c
> @@ -1590,6 +1590,8 @@ ProcessTouchEvent(InternalEvent *ev, DeviceIntPtr dev)
> if (!ti) {
> DebugF("[Xi] %s: Failed to get event %d for touchpoint %d\n",
> dev->name, type, touchid);
> + if (emulate_pointer)
> + UpdateDeviceState(dev, &ev->device_event);
> return;
> }
ACK, but can we do this with a "goto out" please?
Cheers,
Peter
>
> --
> 2.4.0
>
More information about the xorg-devel
mailing list