[PATCH libinput 2/2] Change tp_filter_motion to normalized_coords

Hans de Goede hdegoede at redhat.com
Tue Mar 24 08:51:35 PDT 2015


Change tp_filter_motion to use normalized_coords, rather then having it take
separate x and y values.

Signed-off-by: Hans de Goede <hdegoede at redhat.com>
---
 src/evdev-mt-touchpad-edge-scroll.c |  3 +--
 src/evdev-mt-touchpad-gestures.c    |  8 ++++----
 src/evdev-mt-touchpad.c             | 29 ++++++-----------------------
 src/evdev-mt-touchpad.h             |  5 ++---
 4 files changed, 13 insertions(+), 32 deletions(-)

diff --git a/src/evdev-mt-touchpad-edge-scroll.c b/src/evdev-mt-touchpad-edge-scroll.c
index b83f462..a68d062 100644
--- a/src/evdev-mt-touchpad-edge-scroll.c
+++ b/src/evdev-mt-touchpad-edge-scroll.c
@@ -349,8 +349,7 @@ tp_edge_scroll_post_events(struct tp_dispatch *tp, uint64_t time)
 		}
 
 		normalized = tp_get_delta(t);
-		tp_filter_motion(tp, &normalized.x, &normalized.y,
-				 NULL, NULL, time);
+		normalized = tp_filter_motion(tp, &normalized, time);
 
 		switch (t->scroll.edge_state) {
 		case EDGE_SCROLL_TOUCH_STATE_NONE:
diff --git a/src/evdev-mt-touchpad-gestures.c b/src/evdev-mt-touchpad-gestures.c
index aba5873..7dbf4c4 100644
--- a/src/evdev-mt-touchpad-gestures.c
+++ b/src/evdev-mt-touchpad-gestures.c
@@ -93,11 +93,11 @@ tp_gesture_post_pointer_motion(struct tp_dispatch *tp, uint64_t time)
 
 	/* When a clickpad is clicked, combine motion of all active touches */
 	if (tp->buttons.is_clickpad && tp->buttons.state)
-		delta = tp_get_combined_touches_delta(tp);
+		unaccel = tp_get_combined_touches_delta(tp);
 	else
-		delta = tp_get_average_touches_delta(tp);
+		unaccel = tp_get_average_touches_delta(tp);
 
-	tp_filter_motion(tp, &delta.x, &delta.y, &unaccel.x, &unaccel.y, time);
+	delta = tp_filter_motion(tp, &unaccel, time);
 
 	if (!normalized_is_zero(delta) || !normalized_is_zero(unaccel)) {
 		pointer_notify_motion(&tp->device->base, time,
@@ -111,7 +111,7 @@ tp_gesture_post_twofinger_scroll(struct tp_dispatch *tp, uint64_t time)
 	struct normalized_coords delta;
 
 	delta = tp_get_average_touches_delta(tp);
-	tp_filter_motion(tp, &delta.x, &delta.y, NULL, NULL, time);
+	delta = tp_filter_motion(tp, &delta, time);
 
 	if (normalized_is_zero(delta))
 		return;
diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
index 2078bd7..afc9178 100644
--- a/src/evdev-mt-touchpad.c
+++ b/src/evdev-mt-touchpad.c
@@ -58,33 +58,16 @@ tp_motion_history_offset(struct tp_touch *t, int offset)
 	return &t->history.samples[offset_index];
 }
 
-void
+struct normalized_coords
 tp_filter_motion(struct tp_dispatch *tp,
-	         double *dx, double *dy,
-	         double *dx_unaccel, double *dy_unaccel,
+		 const struct normalized_coords *unaccelerated,
 		 uint64_t time)
 {
-	struct normalized_coords unaccelerated;
-	struct normalized_coords accelerated;
-
-	unaccelerated.x = *dx;
-	unaccelerated.y = *dy;
-
-	if (!normalized_is_zero(unaccelerated))
-		accelerated = filter_dispatch(tp->device->pointer.filter,
-					      &unaccelerated,
-					      tp,
-					      time);
-	else
-		accelerated = unaccelerated;
-
-	if (dx_unaccel)
-		*dx_unaccel = unaccelerated.x;
-	if (dy_unaccel)
-		*dy_unaccel = unaccelerated.y;
+	if (normalized_is_zero(*unaccelerated))
+		return *unaccelerated;
 
-	*dx = accelerated.x;
-	*dy = accelerated.y;
+	return filter_dispatch(tp->device->pointer.filter,
+			       unaccelerated, tp, time);
 }
 
 static inline void
diff --git a/src/evdev-mt-touchpad.h b/src/evdev-mt-touchpad.h
index 0c6d87e..5d52723 100644
--- a/src/evdev-mt-touchpad.h
+++ b/src/evdev-mt-touchpad.h
@@ -288,10 +288,9 @@ tp_normalize_delta(struct tp_dispatch *tp, struct delta_coords delta)
 struct normalized_coords
 tp_get_delta(struct tp_touch *t);
 
-void
+struct normalized_coords
 tp_filter_motion(struct tp_dispatch *tp,
-	         double *dx, double *dy,
-	         double *dx_unaccel, double *dy_unaccel,
+		 const struct normalized_coords *unaccelerated,
 		 uint64_t time);
 
 int
-- 
2.3.1



More information about the wayland-devel mailing list