From 9f353b6678c82d44984fb78e58ee0d0f542c4862 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Tue, 24 Mar 2015 16:43:24 +0100 Subject: [PATCH] Change tp_filter_motion to normalized_coords Change tp_filter_motion to use normalized_coords, rather then having it take separate x and y values. Signed-off-by: Hans de Goede Reviewed-by: Peter Hutterer --- 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 91ebd28..0cdbb19 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.7.4