whot pushed to libinput (master). "Fix finger miscounts on single-touch touchpads (#1209151)"
notifications at fedoraproject.org
notifications at fedoraproject.org
Wed Apr 8 21:54:28 UTC 2015
>From 65a366de895f203b717e69ee2c3232cbbd2a5a10 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer at who-t.net>
Date: Thu, 9 Apr 2015 07:53:33 +1000
Subject: Fix finger miscounts on single-touch touchpads (#1209151)
diff --git a/0001-touchpad-delay-fake-finger-processing-until-the-EV_S.patch b/0001-touchpad-delay-fake-finger-processing-until-the-EV_S.patch
new file mode 100644
index 0000000..2cd156a
--- /dev/null
+++ b/0001-touchpad-delay-fake-finger-processing-until-the-EV_S.patch
@@ -0,0 +1,66 @@
+From 82dc1fae18038d04506e154fb36af66bc66c8960 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Wed, 8 Apr 2015 17:00:50 +1000
+Subject: [PATCH libinput] touchpad: delay fake finger processing until the
+ EV_SYN
+
+A switch from BTN_TOOL_FINGER to BTN_TOOL_DOUBLETAP sets the former to 0, then
+the latter to 1, within the same frame. In the previous code we'd end the
+first touchpoint, then start two new ones immediately after when the DOUBLETAP
+comes in. This causes bug notices in the edge scrolling code and finger
+miscounts in the tapping code (since neither processes the change, there is no
+SYN_REPORT between the two).
+
+Only update the state bits when we get the events, handle the fake touch
+sequence start/end on SYN_REPORT instead.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=89949
+
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+---
+ src/evdev-mt-touchpad.c | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
+index 7d6d838..724fd32 100644
+--- a/src/evdev-mt-touchpad.c
++++ b/src/evdev-mt-touchpad.c
+@@ -317,16 +317,13 @@ tp_process_absolute_st(struct tp_dispatch *tp,
+ }
+
+ static void
+-tp_process_fake_touch(struct tp_dispatch *tp,
+- const struct input_event *e,
+- uint64_t time)
++tp_process_fake_touches(struct tp_dispatch *tp,
++ uint64_t time)
+ {
+ struct tp_touch *t;
+ unsigned int nfake_touches;
+ unsigned int i, start;
+
+- tp_fake_finger_set(tp, e->code, e->value != 0);
+-
+ nfake_touches = tp_fake_finger_count(tp);
+
+ start = tp->has_mt ? tp->real_touches : 0;
+@@ -390,7 +387,7 @@ tp_process_key(struct tp_dispatch *tp,
+ case BTN_TOOL_DOUBLETAP:
+ case BTN_TOOL_TRIPLETAP:
+ case BTN_TOOL_QUADTAP:
+- tp_process_fake_touch(tp, e, time);
++ tp_fake_finger_set(tp, e->code, !!e->value);
+ break;
+ case BTN_0:
+ case BTN_1:
+@@ -548,6 +545,7 @@ tp_process_state(struct tp_dispatch *tp, uint64_t time)
+ struct tp_touch *first = tp_get_touch(tp, 0);
+ unsigned int i;
+
++ tp_process_fake_touches(tp, time);
+ tp_unhover_touches(tp, time);
+
+ for (i = 0; i < tp->ntouches; i++) {
+--
+2.3.4
+
diff --git a/libinput.spec b/libinput.spec
index 66eda63..1b85bcf 100644
--- a/libinput.spec
+++ b/libinput.spec
@@ -5,7 +5,7 @@
Name: libinput
Version: 0.13.0
-Release: 3%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
+Release: 4%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
Summary: Input device library
License: MIT
@@ -21,6 +21,7 @@ Source0: http://www.freedesktop.org/software/libinput/libinput-%{version}
Patch01: 0001-evdev-fix-crash-for-missing-ABS_X-Y.patch
Patch02: 0002-evdev-fix-handling-of-fake-MT-devices-without-ABS_X-.patch
Patch03: 0001-evdev-fix-inverted-mouse-normalization.patch
+Patch04: 0001-touchpad-delay-fake-finger-processing-until-the-EV_S.patch
BuildRequires: git
BuildRequires: autoconf automake libtool pkgconfig
@@ -88,6 +89,9 @@ find $RPM_BUILD_ROOT -name '*.la' -delete
%changelog
+* Thu Apr 09 2015 Peter Hutterer <peter.hutterer at redhat.com> 0.13.0-4
+- Fix finger miscounts on single-touch touchpads (#1209151)
+
* Wed Apr 08 2015 Peter Hutterer <peter.hutterer at redhat.com> 0.13.0-3
- Fix mouse slowdown (#1208992)
--
cgit v0.10.2
http://pkgs.fedoraproject.org/cgit/libinput.git/commit/?h=master&id=65a366de895f203b717e69ee2c3232cbbd2a5a10
More information about the scm-commits
mailing list