From 8665e3678ab07b7071c70d75b137e0528be70e84 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 15 Jul 2014 16:01:49 +1000 Subject: [PATCH] touchpad: check the pointer touch for history size The current touch may not be the pointer touch, so it's pointless checking the history size on that touch. Instead, search for the pointer touch first, check if it's dirty and then check the history size. Signed-off-by: Peter Hutterer --- src/evdev-mt-touchpad.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c index 69b63e0..c7fd3a1 100644 --- a/src/evdev-mt-touchpad.c +++ b/src/evdev-mt-touchpad.c @@ -524,23 +524,23 @@ tp_post_events(struct tp_dispatch *tp, uint64_t time) if (tp_post_scroll_events(tp, time) != 0) return; - if (t->history.count >= TOUCHPAD_MIN_SAMPLES) { - if (!t->is_pointer) { - tp_for_each_touch(tp, t) { - if (t->is_pointer) - break; - } + if (!t->is_pointer) { + tp_for_each_touch(tp, t) { + if (t->is_pointer) + break; } + } - if (!t->is_pointer) - return; + if (!t->is_pointer || + !t->dirty || + t->history.count < TOUCHPAD_MIN_SAMPLES) + return; - tp_get_delta(t, &dx, &dy); - tp_filter_motion(tp, &dx, &dy, time); + tp_get_delta(t, &dx, &dy); + tp_filter_motion(tp, &dx, &dy, time); - if (dx != 0.0 || dy != 0.0) - pointer_notify_motion(&tp->device->base, time, dx, dy); - } + if (dx != 0.0 || dy != 0.0) + pointer_notify_motion(&tp->device->base, time, dx, dy); } static void -- 2.7.4