[PATCH libinput v2 1/3] touchpad: Move 2 finger scrolling functions to above tp_process_state()

Hans de Goede hdegoede at redhat.com
Wed Nov 19 04:45:33 PST 2014


This is purely a code move, this is a preparation patch for adding edge
scrolling support.

Signed-off-by: Hans de Goede <hdegoede at redhat.com>
---
 src/evdev-mt-touchpad.c | 128 ++++++++++++++++++++++++------------------------
 1 file changed, 64 insertions(+), 64 deletions(-)

diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
index 8266c98..5519f1c 100644
--- a/src/evdev-mt-touchpad.c
+++ b/src/evdev-mt-touchpad.c
@@ -399,6 +399,70 @@ tp_palm_detect(struct tp_dispatch *tp, struct tp_touch *t, uint64_t time)
 }
 
 static void
+tp_post_twofinger_scroll(struct tp_dispatch *tp, uint64_t time)
+{
+	struct tp_touch *t;
+	int nchanged = 0;
+	double dx = 0, dy =0;
+	double tmpx, tmpy;
+
+	tp_for_each_touch(tp, t) {
+		if (tp_touch_active(tp, t) && t->dirty) {
+			nchanged++;
+			tp_get_delta(t, &tmpx, &tmpy);
+
+			dx += tmpx;
+			dy += tmpy;
+		}
+		/* Stop spurious MOTION events at the end of scrolling */
+		t->is_pointer = false;
+	}
+
+	if (nchanged == 0)
+		return;
+
+	dx /= nchanged;
+	dy /= nchanged;
+
+	tp_filter_motion(tp, &dx, &dy, time);
+
+	if (tp->scroll.natural_scrolling_enabled) {
+		dx = -dx;
+		dy = -dy;
+	}
+
+	evdev_post_scroll(tp->device, time, dx, dy);
+}
+
+static int
+tp_post_scroll_events(struct tp_dispatch *tp, uint64_t time)
+{
+	struct tp_touch *t;
+	int nfingers_down = 0;
+
+	if (tp->scroll.mode != LIBINPUT_CONFIG_SCROLL_2FG)
+		return 0;
+
+	/* No scrolling during tap-n-drag */
+	if (tp_tap_dragging(tp))
+		return 0;
+
+	/* Only count active touches for 2 finger scrolling */
+	tp_for_each_touch(tp, t) {
+		if (tp_touch_active(tp, t))
+			nfingers_down++;
+	}
+
+	if (nfingers_down != 2) {
+		evdev_stop_scroll(tp->device, time);
+		return 0;
+	}
+
+	tp_post_twofinger_scroll(tp, time);
+	return 1;
+}
+
+static void
 tp_process_state(struct tp_dispatch *tp, uint64_t time)
 {
 	struct tp_touch *t;
@@ -467,70 +531,6 @@ tp_post_process_state(struct tp_dispatch *tp, uint64_t time)
 }
 
 static void
-tp_post_twofinger_scroll(struct tp_dispatch *tp, uint64_t time)
-{
-	struct tp_touch *t;
-	int nchanged = 0;
-	double dx = 0, dy =0;
-	double tmpx, tmpy;
-
-	tp_for_each_touch(tp, t) {
-		if (tp_touch_active(tp, t) && t->dirty) {
-			nchanged++;
-			tp_get_delta(t, &tmpx, &tmpy);
-
-			dx += tmpx;
-			dy += tmpy;
-		}
-		/* Stop spurious MOTION events at the end of scrolling */
-		t->is_pointer = false;
-	}
-
-	if (nchanged == 0)
-		return;
-
-	dx /= nchanged;
-	dy /= nchanged;
-
-	tp_filter_motion(tp, &dx, &dy, time);
-
-	if (tp->scroll.natural_scrolling_enabled) {
-		dx = -dx;
-		dy = -dy;
-	}
-
-	evdev_post_scroll(tp->device, time, dx, dy);
-}
-
-static int
-tp_post_scroll_events(struct tp_dispatch *tp, uint64_t time)
-{
-	struct tp_touch *t;
-	int nfingers_down = 0;
-
-	if (tp->scroll.mode != LIBINPUT_CONFIG_SCROLL_2FG)
-		return 0;
-
-	/* No scrolling during tap-n-drag */
-	if (tp_tap_dragging(tp))
-		return 0;
-
-	/* Only count active touches for 2 finger scrolling */
-	tp_for_each_touch(tp, t) {
-		if (tp_touch_active(tp, t))
-			nfingers_down++;
-	}
-
-	if (nfingers_down != 2) {
-		evdev_stop_scroll(tp->device, time);
-		return 0;
-	}
-
-	tp_post_twofinger_scroll(tp, time);
-	return 1;
-}
-
-static void
 tp_post_events(struct tp_dispatch *tp, uint64_t time)
 {
 	struct tp_touch *t = tp_current_touch(tp);
-- 
2.1.0



More information about the wayland-devel mailing list