[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