[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