[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