libinput/src
Peter Hutterer 42d6fed868 touchpad: always push a touch's current point to the motion history
The way touchpads (generally) work is that they get the position of each
finger on each scanout. The kernel filters touches that haven't moved to
reduce bandwidth so any touch that is logically down that we don't see an
update for is in the same position as during the last scanout.

Previously, touches that didn't sent events were effectively ignored, causing
our jump detection to fail:
- time t0: touch moves to position x/y, motion history time is set to t0
- time t1..t5: touch remains at position for several frames, no updates to the
  motion history
- time t6: touch jumps to position x+a/y+b
  - tp_detect_jumps() sees the last update time is t0 which is too long ago
    and exits without detecting a jump

This is fixed by pushing to the motion history any time we have *any* update -
if the touchpad notices a state change on any touch update all touches with
their current position, whether it changed or not.

This obsoletes the `time` field in the tp_touch struct, most of this patch is
passing down the current time to the few users of t->time.

Fixes #578

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2021-03-11 16:33:00 +10:00
..
builddir.h Fix a few coverity complaints 2020-11-10 14:27:22 +10:00
evdev-debounce.c Drop the trailing slash from the HTTP_DOC_LINK 2020-09-09 11:36:07 +10:00
evdev-fallback.c treewide: get rid of tmp argument in list_for_each_safe 2021-03-02 09:10:35 +03:00
evdev-fallback.h fallback: expand the range of valid keys 2020-10-07 09:38:39 +10:00
evdev-middle-button.c doc: remove the direct link to the various state diagrams 2019-11-15 00:24:00 +00:00
evdev-mt-touchpad-buttons.c touchpad: always push a touch's current point to the motion history 2021-03-11 16:33:00 +10:00
evdev-mt-touchpad-edge-scroll.c touchpad: always push a touch's current point to the motion history 2021-03-11 16:33:00 +10:00
evdev-mt-touchpad-gestures.c [clang-tidy] do not use else after return 2020-08-27 01:17:24 -07:00
evdev-mt-touchpad-tap.c touchpad: permit only one finger on the touchpad at the start of a tap-drag 2021-02-15 05:46:46 +00:00
evdev-mt-touchpad-thumb.c Fix a few coverity complaints 2020-11-10 14:27:22 +10:00
evdev-mt-touchpad.c touchpad: always push a touch's current point to the motion history 2021-03-11 16:33:00 +10:00
evdev-mt-touchpad.h touchpad: always push a touch's current point to the motion history 2021-03-11 16:33:00 +10:00
evdev-tablet-pad-leds.c treewide: get rid of tmp argument in list_for_each_safe 2021-03-02 09:10:35 +03:00
evdev-tablet-pad.c meson.build: update libwacom dependency to 0.27 or newer 2020-09-09 12:36:09 +10:00
evdev-tablet-pad.h [clang-tidy] fix inconsistent declarations 2020-08-27 01:00:31 -07:00
evdev-tablet.c treewide: get rid of tmp argument in list_for_each_safe 2021-03-02 09:10:35 +03:00
evdev-tablet.h tablet: disable smoothing for AES devices 2020-11-25 03:54:47 +00:00
evdev-totem.c totem: separate X/Y resolution from touch size in discriminator 2021-02-09 13:52:20 +01:00
evdev.c evdev: reduce the "your system is slow" warning to 5 per hour 2020-10-28 02:58:03 +00:00
evdev.h Drop the trailing slash from the HTTP_DOC_LINK 2020-09-09 11:36:07 +10:00
filter-flat.c filter-flat.c: remove unused includes 2019-09-12 09:36:40 +10:00
filter-low-dpi.c filter-low-dpi.c: remove unused includes 2019-09-12 09:36:40 +10:00
filter-mouse.c filter-mouse.c: remove unused includes 2019-09-12 09:36:40 +10:00
filter-private.h Add quirk to control velocity averaging, disable it by default 2018-08-22 12:12:55 +02:00
filter-tablet.c filter: drop an unused function and an unused struct 2019-02-06 14:22:02 +10:00
filter-touchpad-flat.c Allow the flat acceleration profile for touchpads 2020-05-27 06:21:00 +00:00
filter-touchpad-x230.c treewide: fix typos 2020-12-16 22:08:23 +01:00
filter-touchpad.c touchpad: use the same speed for scrolling as the baseline of the accel curve 2019-10-14 02:57:48 +00:00
filter-trackpoint.c filter-trackpoint.c: remove unused include 2019-09-12 09:36:40 +10:00
filter.c treewide: fix typos 2020-12-16 22:08:23 +01:00
filter.h treewide: fix typos 2020-12-16 22:08:23 +01:00
libinput-git-version.h.in tools: add the git version in the libinput-record output 2018-03-06 14:22:30 +10:00
libinput-private.h tablet: group the pressure related bit into a substruct 2020-09-22 17:35:41 +10:00
libinput-restore-selinux-context.sh meson: Fix absolute libdir case in install script 2018-02-16 16:57:30 +10:00
libinput-uninstalled.pc.in buildsystem: add missing uninstalled pkg-config infra 2016-08-30 17:18:39 +10:00
libinput-util.h util: make the trace macro actually useful 2020-04-04 21:10:40 +10:00
libinput-version.h.in COPYING: Update boilerplate from MIT X11 to MIT Expat license 2015-06-16 14:36:04 +10:00
libinput-versionsort.h Add versionsort test 2018-07-19 22:29:00 +03:00
libinput.c treewide: get rid of tmp argument in list_for_each_safe 2021-03-02 09:10:35 +03:00
libinput.h touchpad: allow tap-and-drag for two-finger and three-finger taps 2020-09-25 06:01:28 +00:00
libinput.pc.in Add -lrt to the libs 2014-07-03 09:59:43 +10:00
libinput.sym pad: add LIBINPUT_EVENT_TABLET_PAD_KEY for pad keys 2019-12-04 15:38:39 +10:00
path-seat.c treewide: get rid of tmp argument in list_for_each_safe 2021-03-02 09:10:35 +03:00
quirks.c treewide: get rid of tmp argument in list_for_each_safe 2021-03-02 09:10:35 +03:00
quirks.h quirks: switch the models with missing buttonpad to use the new attr 2020-10-23 13:35:50 +10:00
timer.c timer: fix a logic error checking the list node 2020-09-09 13:57:39 +10:00
timer.h timer: flush the timer funcs if our events come in late 2017-09-21 12:27:46 +10:00
udev-seat.c replace strncmp with strneq for safety-check 2021-03-08 20:59:20 +00:00
udev-seat.h COPYING: Update boilerplate from MIT X11 to MIT Expat license 2015-06-16 14:36:04 +10:00
util-bits.h Split utility functions into separate source files 2019-09-11 12:23:04 +10:00
util-input-event.h Adjust for 64bit time_t for 32bit architectures 2019-11-26 15:11:44 +10:00
util-list.c Split utility functions into separate source files 2019-09-11 12:23:04 +10:00
util-list.h util: document our list interface 2021-03-10 03:48:21 +00:00
util-macros.h tools: add a tablet debugging tool 2019-11-19 09:56:14 +10:00
util-matrix.h Split utility functions into separate source files 2019-09-11 12:23:04 +10:00
util-prop-parsers.c treewide: fix typos 2020-12-16 22:08:23 +01:00
util-prop-parsers.h quirks: add AttrInputPropEnable and Disable 2020-10-23 13:35:50 +10:00
util-ratelimit.c [clang-tidy] do not use else after return 2020-08-27 01:17:24 -07:00
util-ratelimit.h [clang-tidy] fix inconsistent declarations 2020-08-27 01:00:31 -07:00
util-strings.c utils: add a safe version of basename 2021-02-23 10:56:53 +10:00
util-strings.h utils: add a safe version of basename 2021-02-23 10:56:53 +10:00
util-time.h evdev: print a human time for ratelimit tests 2020-03-22 10:35:21 +10:00