[PATCH] Remove last listener on touch reject
Peter Hutterer
peter.hutterer at who-t.net
Thu Jan 5 20:02:43 PST 2012
On Thu, Jan 05, 2012 at 04:43:40PM -0800, Chase Douglas wrote:
> From: Chase Douglas <chase.douglas at ubuntu.com>
>
> The current code short-circuits around the block that removes the
> rejecting listener if it is the only listener left. It also does not
> delete the touchpoint record if the touch has not physically ended.
>
> This change ensures the listener is removed under these circumstances.
>
> Signed-off-by: Chase Douglas <chase.douglas at ubuntu.com>
applied, thanks.
Cheers,
Peter
> ---
> Xi/exevents.c | 14 ++++++--------
> 1 files changed, 6 insertions(+), 8 deletions(-)
>
> diff --git a/Xi/exevents.c b/Xi/exevents.c
> index b3b05f7..6b2db4b 100644
> --- a/Xi/exevents.c
> +++ b/Xi/exevents.c
> @@ -1159,13 +1159,11 @@ TouchEventRejected(DeviceIntPtr sourcedev, TouchPointInfoPtr ti,
> DeliverTouchEvents(sourcedev, ti, tel + i, ev->resource);
> }
>
> - /* If there are no other listeners left, then don't bother sending an
> - * ownership change event to no-one; if the touchpoint is pending
> + /* If there are no other listeners left, and the touchpoint is pending
> * finish, then we can just kill it now. */
> - if (ti->num_listeners == 1)
> + if (ti->num_listeners == 1 && ti->pending_finish)
> {
> - if (ti->pending_finish)
> - TouchEndTouch(sourcedev, ti);
> + TouchEndTouch(sourcedev, ti);
> goto out;
> }
>
> @@ -1178,9 +1176,9 @@ TouchEventRejected(DeviceIntPtr sourcedev, TouchPointInfoPtr ti,
> ti->num_grabs--;
> }
>
> - /* If the current owner was removed, deliver the TouchOwnership or TouchBegin
> - event to the new owner. */
> - if (was_owner)
> + /* If the current owner was removed and there are further listeners, deliver
> + * the TouchOwnership or TouchBegin event to the new owner. */
> + if (ti->num_listeners > 0 && was_owner)
> TouchPuntToNextOwner(sourcedev, ti, ev);
>
> out:
> --
> 1.7.7.3
More information about the xorg-devel
mailing list