[1/3] dix: don't pass x/y to transformAbsolute

Submitted by Peter Hutterer on May 31, 2011, 10:57 a.m.

Details

Message ID 1306814267-23972-1-git-send-email-peter.hutterer@who-t.net
State Accepted, archived
Commit fe4b818700453b76d9f46749dac5d12540b91e63
Headers show

Not browsing as part of any series.

Commit Message

Peter Hutterer May 31, 2011, 10:57 a.m.
We passed in the mask, but didn't do anything with it. Move the logic to
take the axes out of the valuator masks into transformAbsolute.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
---
 dix/getevents.c |   38 +++++++++++++++++++++++++-------------
 1 files changed, 25 insertions(+), 13 deletions(-)

Patch hide | download patch | download mbox

diff --git a/dix/getevents.c b/dix/getevents.c
index 13789f6..6dcee3e 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -1052,17 +1052,38 @@  FreeEventList(InternalEvent *list, int num_events)
     free(list);
 }
 
+/**
+ * Transform vector x/y according to matrix m and drop the rounded coords
+ * back into x/y.
+ */
 static void
-transformAbsolute(DeviceIntPtr dev, ValuatorMask *mask, int *x, int *y)
+transform(struct pixman_f_transform *m, int *x, int *y)
 {
     struct pixman_f_vector p = {.v = {*x, *y, 1}};
-
-    pixman_f_transform_point(&dev->transform, &p);
+    pixman_f_transform_point(m, &p);
 
     *x = lround(p.v[0]);
     *y = lround(p.v[1]);
 }
 
+static void
+transformAbsolute(DeviceIntPtr dev, ValuatorMask *mask)
+{
+    int x, y;
+
+    x = valuator_mask_isset(mask, 0) ? valuator_mask_get(mask, 0) :
+                                       dev->last.valuators[0];
+    y = valuator_mask_isset(mask, 1) ? valuator_mask_get(mask, 1) :
+                                       dev->last.valuators[1];
+
+    transform(&dev->transform, &x, &y);
+
+    if (valuator_mask_isset(mask, 0))
+        valuator_mask_set(mask, 0, x);
+    if (valuator_mask_isset(mask, 1))
+        valuator_mask_set(mask, 1, y);
+}
+
 /**
  * Generate internal events representing this pointer event and enqueue them
  * on the event queue.
@@ -1175,16 +1196,7 @@  GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, int buttons
             }
         }
 
-        x = (valuator_mask_isset(&mask, 0) ? valuator_mask_get(&mask, 0) :
-             pDev->last.valuators[0]);
-        y = (valuator_mask_isset(&mask, 1) ? valuator_mask_get(&mask, 1) :
-             pDev->last.valuators[1]);
-        transformAbsolute(pDev, &mask, &x, &y);
-        if (valuator_mask_isset(&mask, 0))
-            valuator_mask_set(&mask, 0, x);
-        if (valuator_mask_isset(&mask, 1))
-            valuator_mask_set(&mask, 1, y);
-
+        transformAbsolute(pDev, &mask);
         moveAbsolute(pDev, &x, &y, &mask);
     } else {
         if (flags & POINTER_ACCELERATE) {

Comments

On 05/31/2011 05:57 AM, Peter Hutterer wrote:
> We passed in the mask, but didn't do anything with it. Move the logic to
> take the axes out of the valuator masks into transformAbsolute.
> 
> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Simon Thum <simon.thum@gmx.de>


> ---
>  dix/getevents.c |   38 +++++++++++++++++++++++++-------------
>  1 files changed, 25 insertions(+), 13 deletions(-)
> 
> diff --git a/dix/getevents.c b/dix/getevents.c
> index 13789f6..6dcee3e 100644
> --- a/dix/getevents.c
> +++ b/dix/getevents.c
> @@ -1052,17 +1052,38 @@ FreeEventList(InternalEvent *list, int num_events)
>      free(list);
>  }
>  
> +/**
> + * Transform vector x/y according to matrix m and drop the rounded coords
> + * back into x/y.
> + */
>  static void
> -transformAbsolute(DeviceIntPtr dev, ValuatorMask *mask, int *x, int *y)
> +transform(struct pixman_f_transform *m, int *x, int *y)
>  {
>      struct pixman_f_vector p = {.v = {*x, *y, 1}};
> -
> -    pixman_f_transform_point(&dev->transform, &p);
> +    pixman_f_transform_point(m, &p);
>  
>      *x = lround(p.v[0]);
>      *y = lround(p.v[1]);
>  }
>  
> +static void
> +transformAbsolute(DeviceIntPtr dev, ValuatorMask *mask)
> +{
> +    int x, y;
> +
> +    x = valuator_mask_isset(mask, 0) ? valuator_mask_get(mask, 0) :
> +                                       dev->last.valuators[0];
> +    y = valuator_mask_isset(mask, 1) ? valuator_mask_get(mask, 1) :
> +                                       dev->last.valuators[1];
> +
> +    transform(&dev->transform, &x, &y);
> +
> +    if (valuator_mask_isset(mask, 0))
> +        valuator_mask_set(mask, 0, x);
> +    if (valuator_mask_isset(mask, 1))
> +        valuator_mask_set(mask, 1, y);
> +}
> +
>  /**
>   * Generate internal events representing this pointer event and enqueue them
>   * on the event queue.
> @@ -1175,16 +1196,7 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, int buttons
>              }
>          }
>  
> -        x = (valuator_mask_isset(&mask, 0) ? valuator_mask_get(&mask, 0) :
> -             pDev->last.valuators[0]);
> -        y = (valuator_mask_isset(&mask, 1) ? valuator_mask_get(&mask, 1) :
> -             pDev->last.valuators[1]);
> -        transformAbsolute(pDev, &mask, &x, &y);
> -        if (valuator_mask_isset(&mask, 0))
> -            valuator_mask_set(&mask, 0, x);
> -        if (valuator_mask_isset(&mask, 1))
> -            valuator_mask_set(&mask, 1, y);
> -
> +        transformAbsolute(pDev, &mask);
>          moveAbsolute(pDev, &x, &y, &mask);
>      } else {
>          if (flags & POINTER_ACCELERATE) {