[PATCH 2/2 xf86-input-evdev] Ensure all known valuator values are stored when out of proximity

Chase Douglas chase.douglas at canonical.com
Mon Apr 4 06:40:14 PDT 2011


The current code overwrites *all* the stored axis values with whatever
came in from evdev. Evdev is a stateful protocol, so it only sends us
updates to the axis values that have changed. We need to only update
the values that have changed.

Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
---
 src/evdev.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/evdev.c b/src/evdev.c
index 9cf6fae..b767b0e 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -504,7 +504,10 @@ EvdevProcessProximityState(InputInfoPtr pInfo)
     if (!pEvdev->prox_queued)
     {
         if (pEvdev->abs_queued && !pEvdev->in_proximity)
-            valuator_mask_copy(pEvdev->prox, pEvdev->vals);
+            for (i = 0; i < valuator_mask_size(pEvdev->vals); i++)
+                if (valuator_mask_isset(pEvdev->vals, i))
+                    valuator_mask_set(pEvdev->prox, i,
+                                      valuator_mask_get(pEvdev->vals, i));
         return 0;
     }
 
-- 
1.7.4.1



More information about the xorg-devel mailing list