[PATCH 2/2] Use event time instead of CurrentTime for grab times

Peter Hutterer peter.hutterer at who-t.net
Thu Jan 12 17:05:57 PST 2012


On Wed, Jan 11, 2012 at 07:38:12AM -0800, Chase Douglas wrote:
> When {XI,X,}AllowEvents is called, the timestamp is compared against the
> grab time to ensure that the request pertains to the current grab in the
> server. While many clients may use CurrentTime (client-side), the
> timestamp of the event causing the grab is also valid.
> 
> This change ensures that the server's notion of the grab time is the
> time of the event that activated the grab rather than the time that the
> grab is actually activated.
> 
> This bug was exposed through nested touch then pointer grabs.
> 
> Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
> ---
>  dix/events.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/dix/events.c b/dix/events.c
> index 5360267..d4b00e0 100644
> --- a/dix/events.c
> +++ b/dix/events.c
> @@ -3723,7 +3723,8 @@ ActivatePassiveGrab(DeviceIntPtr device, GrabPtr grab, InternalEvent *event,
>          }
>      }
>  
> -    (*grabinfo->ActivateGrab)(device, grab, currentTime, TRUE);
> +    (*grabinfo->ActivateGrab)(device, grab,
> +                              ClientTimeToServerTime(event->any.time), TRUE);
>  
>      if (xE)
>      {
> -- 
> 1.7.7.3

fwiw, I've merged this one, unsure about the other one at this point, see
the comment there.

Cheers,
  Peter


More information about the xorg-devel mailing list