[PATCH] dix: set raw event values before adding up relative values (#46976)
Simon Thum
simon.thum at gmx.de
Wed Mar 21 15:18:49 PDT 2012
On 03/21/2012 05:09 AM, Peter Hutterer wrote:
> Regression introduced in 4e52cc0ef48145134cd58d357fb7289e6f8bb709
>
> Raw event values are values as-is from the driver, modified only be
> transformation or acceleration. 4e52cc caused the mask to be updated from
> driver-submitted relative to device-absolute coordinates, and that mask was
> then written into the raw events.
>
> Move the raw event update into the respective branches for absolute/relative
> events.
>
> X.Org Bug 46976<http://bugs.freedesktop.org/show_bug.cgi?id=46976>
>
> Signed-off-by: Peter Hutterer<peter.hutterer at who-t.net>
> ---
> dix/getevents.c | 9 +++++----
> 1 files changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/dix/getevents.c b/dix/getevents.c
> index 5b9cef3..fd5998d 100644
> --- a/dix/getevents.c
> +++ b/dix/getevents.c
> @@ -1311,17 +1311,18 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type,
>
> transformAbsolute(pDev,&mask);
> clipAbsolute(pDev,&mask);
> + if ((flags& POINTER_NORAW) == 0)
> + set_raw_valuators(raw,&mask, raw->valuators.data);
> } else {
> if (flags& POINTER_ACCELERATE)
> accelPointer(pDev,&mask, ms);
> + if ((flags& POINTER_NORAW) == 0)
> + set_raw_valuators(raw,&mask, raw->valuators.data);
> +
> moveRelative(pDev,&mask);
> }
>
> /* valuators are in device coordinate system in absolute coordinates */
> -
> - if ((flags& POINTER_NORAW) == 0)
> - set_raw_valuators(raw,&mask, raw->valuators.data);
> -
> scale_to_desktop(pDev,&mask,&devx,&devy,&screenx,&screeny);
> scr = positionSprite(pDev, (flags& POINTER_ABSOLUTE) ? Absolute : Relative,
> &mask,&devx,&devy,&screenx,&screeny);
Reviewed-by: Simon Thum <simon.thum at gmx.de>
Cheers,
Simon
More information about the xorg-devel
mailing list