On Thu, Jan 05, 2012 at 04:43:40PM -0800, Chase Douglas wrote:
> From: Chase Douglas <[email protected]>
>
> 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 <[email protected]>
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
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel