diff options
author | Hans de Goede <hdegoede@redhat.com> | 2014-11-24 12:16:04 +0100 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2014-11-25 17:02:25 +1000 |
commit | 26080263e6ee7c3cd179a395fd6de1c224aba036 (patch) | |
tree | 0537822ce8ec8872fc10b0ec47c2033be11535e2 | |
parent | 348cff570194e0852794cab7b673447709311fcc (diff) | |
download | libinput-26080263e6ee7c3cd179a395fd6de1c224aba036.tar.gz |
touchpad: Move 2 finger scrolling functions to above tp_process_state()
This is purely a code move, this is a preparation patch for adding edge
scrolling support.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | src/evdev-mt-touchpad.c | 118 |
1 files changed, 59 insertions, 59 deletions
diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c index c3d1d9ef..7a1c32d0 100644 --- a/src/evdev-mt-touchpad.c +++ b/src/evdev-mt-touchpad.c @@ -399,6 +399,65 @@ 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); + + 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.method != 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,65 +526,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); - - 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.method != 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); |