From 68a6a18fc2fe1d95c9196c1948a27f9e95029bec Mon Sep 17 00:00:00 2001 From: Chase Douglas Date: Mon, 4 Apr 2011 09:40:14 -0400 Subject: Ensure all known valuator values are stored when out of proximity 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 Signed-off-by: Peter Hutterer --- src/evdev.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/evdev.c b/src/evdev.c index 801e069..bad7bb8 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; } -- cgit v1.2.3