diff options
author | Patrick Williams <patrick@stwcx.xyz> | 2015-09-15 22:41:29 +0300 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2015-09-15 22:41:29 +0300 |
commit | 21f9b84b4b729fbd7acbd465e7a3f726e4d20f91 (patch) | |
tree | eb2d091d427ca0813b445509d59cc8e27e8ad25f /yocto-poky/meta/recipes-graphics/wayland/libinput/touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch | |
parent | 101cef31e2bf54c678501155cd2106251acbd076 (diff) | |
parent | c124f4f2e04dca16a428a76c89677328bc7bf908 (diff) | |
download | openbmc-21f9b84b4b729fbd7acbd465e7a3f726e4d20f91.tar.xz |
Merge commit 'c124f4f2e04dca16a428a76c89677328bc7bf908' as 'yocto-poky'
Diffstat (limited to 'yocto-poky/meta/recipes-graphics/wayland/libinput/touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch')
-rw-r--r-- | yocto-poky/meta/recipes-graphics/wayland/libinput/touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/yocto-poky/meta/recipes-graphics/wayland/libinput/touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch b/yocto-poky/meta/recipes-graphics/wayland/libinput/touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch new file mode 100644 index 000000000..97c63bd37 --- /dev/null +++ b/yocto-poky/meta/recipes-graphics/wayland/libinput/touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch @@ -0,0 +1,72 @@ +This is a workaround upstream suggests for use with kernel 4.1. + +Upstream-Status: Inappropriate [temporary work-around] +Signed-Off-By: Jussi Kukkonen <jussi.kukkonen@intel.com> + + + +From: Peter Hutterer <peter.hutterer@who-t.net> +Date: Mon Aug 3 18:23:12 PDT 2015 +Subject: [PATCH v3 libinput] touchpad: serial synaptics need to fake new touches on TRIPLETAP + +On the 4.1 kernels synaptics pretends to have 3 slots (the serial fw only does +2). This was added to avoid cursor jumps but has since been reverted for 4.2 +(kernel commit dbf3c37086, 4.1.3 is still buggy). In some cases a TRIPLETAP +may be triggered without slot 2 ever activating. + +While there are still those kernels out there, work around this bug by opening +a new touch point where none exists if the fake finger count exceeds the slot +count. + +Reported-by: Jan Alexander Steffens <jan.steffens at gmail.com> +Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net> +Tested-by: Jan Alexander Steffens <jan.steffens at gmail.com> +Reviewed-by: Hans de Goede <hdegoede at redhat.com> +--- +Changes to v2: +- split out the handling instead of having a tmp state variable, see Hans' + comments from v2 + +Mainly sending this to the list again so I have a link to point people to. +If you're on 4.1.x add this patch to your distribution package. + + src/evdev-mt-touchpad.c | 22 ++++++++++++++++------ + 1 file changed, 16 insertions(+), 6 deletions(-) + +diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c +index a683d9a..5ef03d5 100644 +--- a/src/evdev-mt-touchpad.c ++++ b/src/evdev-mt-touchpad.c +@@ -369,13 +369,23 @@ tp_restore_synaptics_touches(struct tp_dispatch *tp, + for (i = 0; i < tp->num_slots; i++) { + struct tp_touch *t = tp_get_touch(tp, i); + +- if (t->state != TOUCH_END) ++ switch(t->state) { ++ case TOUCH_HOVERING: ++ case TOUCH_BEGIN: ++ case TOUCH_UPDATE: + continue; +- +- /* new touch, move it through begin to update immediately */ +- tp_new_touch(tp, t, time); +- tp_begin_touch(tp, t, time); +- t->state = TOUCH_UPDATE; ++ case TOUCH_NONE: ++ /* new touch, move it through to begin immediately */ ++ tp_new_touch(tp, t, time); ++ tp_begin_touch(tp, t, time); ++ break; ++ case TOUCH_END: ++ /* touch just ended ,we need need to restore it to update */ ++ tp_new_touch(tp, t, time); ++ tp_begin_touch(tp, t, time); ++ t->state = TOUCH_UPDATE; ++ break; ++ } + } + } + +-- +2.4.3 + |