aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Huddleston <jeremyhu@freedesktop.org>2009-06-03 10:29:39 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2009-06-03 10:37:54 -0400
commit05e882f890038c702a4f15d385135d03cf74ad48 (patch)
tree7a502c2946359809e3739a7c0f32e1ffcf04373a
parenta86295283063ce23fbefad494c71290caf8eae25 (diff)
Input: appletouch - improve finger detection
The appletouch driver is prone to reporting multiple fingers when only one is pressing. The appletouch driver queries an array of pressure sensors and counts local maxima in pressure to determine the number of fingers. It just does this on the raw values, so a data stream like: 0 100 250 300 299 300 250 100 0 actually registers as 2 fingers. This patch updates the logic to ignore small dips in pressure that are less than the threshold. Signed-off-by: Jeremy Huddleston <jeremyhu@freedesktop.org> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
-rw-r--r--drivers/input/mouse/appletouch.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/input/mouse/appletouch.c b/drivers/input/mouse/appletouch.c
index e0140fdc02a..908b5b44052 100644
--- a/drivers/input/mouse/appletouch.c
+++ b/drivers/input/mouse/appletouch.c
@@ -361,7 +361,7 @@ static int atp_calculate_abs(int *xy_sensors, int nb_sensors, int fact,
361 (!is_increasing && xy_sensors[i - 1] < xy_sensors[i])) { 361 (!is_increasing && xy_sensors[i - 1] < xy_sensors[i])) {
362 (*fingers)++; 362 (*fingers)++;
363 is_increasing = 1; 363 is_increasing = 1;
364 } else if (i > 0 && xy_sensors[i - 1] >= xy_sensors[i]) { 364 } else if (i > 0 && (xy_sensors[i - 1] - xy_sensors[i] > threshold)) {
365 is_increasing = 0; 365 is_increasing = 0;
366 } 366 }
367 367