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.doug...@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
_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to