[PATCH libinput] touchpad: short-circuit the edge scroll handling when it's not enabled

Peter Hutterer peter.hutterer at who-t.net
Tue May 31 00:16:25 UTC 2016


No need to handle events properly in the edge scroll state machine when it's
not enabled. Just set any beginning touch to state AREA and move on. The rest
of the code guarantees neutral state when edge scrolling is enabled or
disabled.

This reduces the debug output produced by libinput-debug-events when edge
scrolling is disabled, preventing users from seemingly identifying
bugs where there are none.

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 src/evdev-mt-touchpad-edge-scroll.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/evdev-mt-touchpad-edge-scroll.c b/src/evdev-mt-touchpad-edge-scroll.c
index fcc0512..8222bba 100644
--- a/src/evdev-mt-touchpad-edge-scroll.c
+++ b/src/evdev-mt-touchpad-edge-scroll.c
@@ -318,6 +318,15 @@ tp_edge_scroll_handle_state(struct tp_dispatch *tp, uint64_t time)
 {
 	struct tp_touch *t;
 
+	if (tp->scroll.method != LIBINPUT_CONFIG_SCROLL_EDGE) {
+		tp_for_each_touch(tp, t) {
+			if (t->state == TOUCH_BEGIN)
+				t->scroll.edge_state =
+					EDGE_SCROLL_TOUCH_STATE_AREA;
+		}
+		return;
+	}
+
 	tp_for_each_touch(tp, t) {
 		if (!t->dirty)
 			continue;
@@ -350,9 +359,6 @@ tp_edge_scroll_post_events(struct tp_dispatch *tp, uint64_t time)
 	const struct normalized_coords zero = { 0.0, 0.0 };
 	const struct discrete_coords zero_discrete = { 0.0, 0.0 };
 
-	if (tp->scroll.method != LIBINPUT_CONFIG_SCROLL_EDGE)
-		return 0;
-
 	tp_for_each_touch(tp, t) {
 		if (!t->dirty)
 			continue;
-- 
2.7.4



More information about the wayland-devel mailing list