[PATCH] Do sent TouchEnd to listeners that don't own an accepted touch
Chase Douglas
chase.douglas at canonical.com
Thu Jul 26 13:40:29 PDT 2012
On 07/26/2012 01:31 PM, Daniel d'Andrada wrote:
> When the owner of a touch accepts it, the other listeners must
> receive a TouchEnd.
>
> Even though there's code implementing the logic above in
> ProcessTouchOwnershipEvent(), DeliverTouchEndEvent() was refusing to send
> those TouchEnd events in this situatuation.
>
> Signed-off-by: Daniel d'Andrada <daniel.dandrada at canonical.com>
> ---
> Xi/exevents.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/Xi/exevents.c b/Xi/exevents.c
> index 9f6ec84..494d07e 100644
> --- a/Xi/exevents.c
> +++ b/Xi/exevents.c
> @@ -1888,6 +1888,12 @@ DeliverTouchEndEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev,
> if (normal_end)
> listener->state = LISTENER_HAS_END;
> }
> + else if (ev->device_event.flags & TOUCH_ACCEPT) {
> + /* Touch has been accepted by its owner, which is not this listener */
> + if (listener->state != LISTENER_HAS_END)
> + rc = DeliverOneTouchEvent(client, dev, ti, grab, win, ev);
> + listener->state = LISTENER_HAS_END;
> + }
>
> out:
> return rc;
We simply missed this one during development :(.
I want to make an integration test for this, but I don't have the time
to do it right this minute.
Reviewed-by: Chase Douglas <chase.douglas at canonical.com>
More information about the xorg-devel
mailing list