libinput 1.10

This commit is contained in:
Peter Hutterer 2018-02-13 11:57:10 +10:00
parent 27ee09342e
commit b1b6782406
4 changed files with 6 additions and 60 deletions

1
.gitignore vendored
View File

@ -15,3 +15,4 @@
/libinput-1.9.4.tar.xz
/libinput-1.9.901.tar.xz
/libinput-1.9.902.tar.xz
/libinput-1.10.0.tar.xz

View File

@ -1,56 +0,0 @@
From d26b08b93f05eba58d46ad6811e71e9da0e74201 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Mon, 5 Feb 2018 09:11:42 +1000
Subject: [PATCH libinput] tablet: don't set rotation on a tool if we don't
have ABS_Z
Rotation on a tool can either ABS_Z or in the case of the mouse/lens tools a
combination of ABS_TILT_X/Y. The code assumes that if the rotation on a stylus
(not mouse/lense) changes, we need to fetch it from ABS_Z. This happens on the
very first event from the tablet, proximity in invalidates all axes so we can
send the current state to the caller.
On libwacom-recognized tablets we never set the rotation bit on the stylus, so
that's all fine. On tablets without libwacom support, the stylus may have a
rotation bit copied because we have it set thanks to mouse+tilt on the tablet.
When that first event is handled, we try to access ABS_Z. On tablets without
ABS_Z like Aipteks, we go boom.
Fix this by checking for ABS_Z during tablet init, if we don't have that axis
then never set the rotation bit on the tool. That's the only axis where we
need this, all other axes have a single cause only and thus the tablet bits
are accurate anyway.
https://bugs.freedesktop.org/show_bug.cgi?id=104939
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
---
src/evdev-tablet.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/evdev-tablet.c b/src/evdev-tablet.c
index 2f6b64da..771e7775 100644
--- a/src/evdev-tablet.c
+++ b/src/evdev-tablet.c
@@ -933,7 +933,17 @@ tool_set_bits(const struct tablet_dispatch *tablet,
copy_axis_cap(tablet, tool, LIBINPUT_TABLET_TOOL_AXIS_TILT_X);
copy_axis_cap(tablet, tool, LIBINPUT_TABLET_TOOL_AXIS_TILT_Y);
copy_axis_cap(tablet, tool, LIBINPUT_TABLET_TOOL_AXIS_SLIDER);
- copy_axis_cap(tablet, tool, LIBINPUT_TABLET_TOOL_AXIS_ROTATION_Z);
+
+ /* Rotation is special, it can be either ABS_Z or
+ * BTN_TOOL_MOUSE+ABS_TILT_X/Y. Aiptek tablets have
+ * mouse+tilt (and thus rotation), but they do not have
+ * ABS_Z. So let's not copy the axis bit if we don't have
+ * ABS_Z, otherwise we try to get the value from it later on
+ * proximity in and go boom because the absinfo isn't there.
+ */
+ if (libevdev_has_event_code(tablet->device->evdev, EV_ABS,
+ ABS_Z))
+ copy_axis_cap(tablet, tool, LIBINPUT_TABLET_TOOL_AXIS_ROTATION_Z);
break;
case LIBINPUT_TABLET_TOOL_TYPE_MOUSE:
case LIBINPUT_TABLET_TOOL_TYPE_LENS:
--
2.14.3

View File

@ -4,7 +4,7 @@
%global gitversion 58abea394
Name: libinput
Version: 1.9.902
Version: 1.10.0
Release: 1%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
Summary: Input device library
@ -18,8 +18,6 @@ Source2: commitid
Source0: http://www.freedesktop.org/software/libinput/libinput-%{version}.tar.xz
%endif
Patch01: 0001-tablet-don-t-set-rotation-on-a-tool-if-we-don-t-have.patch
BuildRequires: git-core
BuildRequires: gcc
BuildRequires: meson
@ -111,6 +109,9 @@ The %{name}-utils package contains tools to debug hardware and analyze
%{_mandir}/man1/libinput-measure-trackpoint-range.1*
%changelog
* Tue Feb 13 2018 Peter Hutterer <peter.hutterer@redhat.com> 1.10.0-1
- libinput 1.10
* Tue Feb 06 2018 Peter Hutterer <peter.hutterer@redhat.com> 1.9.902-1
- libinput 1.10rc2

View File

@ -1 +1 @@
SHA512 (libinput-1.9.902.tar.xz) = b2309145c90b7d24bbc8894ea1fb8846d67900ce761273a6f3fa769c0e0bb0d1162363845e26ee535d5a4f438f09fa104c04c4db0ddf9efdd229fb786e32dd7e
SHA512 (libinput-1.10.0.tar.xz) = 173f72f454c534dee755b6121c4577900ae9b8a129ac41de69410c3195950a6d149d6148892c4976f013eeabca66117d53fa67e352cc005960863a5576696928