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<[email protected]>
---
  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 <[email protected]>

Cheers,

Simon
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to