1
From 6139f903bc1942b160d3d94828d9aa66d9d3febd Mon Sep 17 00:00:00 2001
2
From: Chase Douglas <chase.douglas@canonical.com>
3
Date: Thu, 14 Apr 2011 15:48:10 -0400
4
Subject: [PATCH] Copy out of proximity values into current values selectively
6
Otherwise, an event that causes us to go into proximity with some new
7
valuator values will retain some old valuator values from when last in
8
proximity. This change ensures that all values posted while out of
9
proximity are accounted for.
11
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
13
src/evdev.c | 15 ++++++++-------
14
1 files changed, 8 insertions(+), 7 deletions(-)
16
diff --git a/src/evdev.c b/src/evdev.c
17
index b767b0e..f31f492 100644
20
@@ -525,13 +525,14 @@ EvdevProcessProximityState(InputInfoPtr pInfo)
22
/* We're about to go into/out of proximity but have no abs events
23
* within the EV_SYN. Use the last coordinates we have. */
24
- if (!pEvdev->abs_queued &&
25
- valuator_mask_num_valuators(pEvdev->prox) > 0)
27
- valuator_mask_copy(pEvdev->vals, pEvdev->prox);
28
- valuator_mask_zero(pEvdev->prox);
29
- pEvdev->abs_queued = 1;
31
+ for (i = 0; i < valuator_mask_size(pEvdev->prox); i++)
32
+ if (!valuator_mask_isset(pEvdev->vals, i) &&
33
+ valuator_mask_isset(pEvdev->prox, i))
34
+ valuator_mask_set(pEvdev->vals, i,
35
+ valuator_mask_get(pEvdev->prox, i));
36
+ valuator_mask_zero(pEvdev->prox);
38
+ pEvdev->abs_queued = valuator_mask_size(pEvdev->vals);
41
pEvdev->in_proximity = prox_state;