Use the new unnaccelerated valuator masks, fixes nonmoving mouse in SDL
(#1208992)
This commit is contained in:
parent
ab0fd39539
commit
765f14a60a
@ -0,0 +1,91 @@
|
||||
From 19c91044e44dd31deaeb638a919c64e9a9182448 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Tue, 5 May 2015 14:17:10 +1000
|
||||
Subject: [PATCH xf86-input-libinput] Use the new unaccelerated valuator
|
||||
ValuatorMask features
|
||||
|
||||
SDL Games like openarena rely on relative input that's handled by the DGA code
|
||||
in the server. That code casts the driver's input data to int and sends it to
|
||||
the client. libinput does pointer acceleration for us, so sending any deltas
|
||||
of less than 1 (likely for slow movements) ends up being 0.
|
||||
|
||||
Use the new ValuatorMask accelerated/unaccelerated values to pass the
|
||||
unaccelerated values along, the server can then decide what to do with it.
|
||||
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
src/libinput.c | 27 ++++++++++++++++++++++++++-
|
||||
1 file changed, 26 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/libinput.c b/src/libinput.c
|
||||
index c8669fc..3cc4426 100644
|
||||
--- a/src/libinput.c
|
||||
+++ b/src/libinput.c
|
||||
@@ -47,6 +47,12 @@
|
||||
#define XI86_SERVER_FD 0x20
|
||||
#endif
|
||||
|
||||
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) * 1000 + GET_ABI_MINOR(ABI_XINPUT_VERSION) > 21000
|
||||
+#define HAVE_VMASK_UNACCEL 1
|
||||
+#else
|
||||
+#undef HAVE_VMASK_UNACCEL
|
||||
+#endif
|
||||
+
|
||||
#define TOUCHPAD_NUM_AXES 4 /* x, y, hscroll, vscroll */
|
||||
#define TOUCH_MAX_SLOTS 15
|
||||
#define XORG_KEYCODE_OFFSET 8
|
||||
@@ -88,6 +94,7 @@ struct xf86libinput {
|
||||
BOOL has_abs;
|
||||
|
||||
ValuatorMask *valuators;
|
||||
+ ValuatorMask *valuators_unaccelerated;
|
||||
|
||||
struct options {
|
||||
BOOL tapping;
|
||||
@@ -700,9 +707,21 @@ xf86libinput_handle_motion(InputInfoPtr pInfo, struct libinput_event_pointer *ev
|
||||
y = libinput_event_pointer_get_dy(event);
|
||||
|
||||
valuator_mask_zero(mask);
|
||||
+
|
||||
+#if HAVE_VMASK_UNACCEL
|
||||
+ {
|
||||
+ double ux, uy;
|
||||
+
|
||||
+ ux = libinput_event_pointer_get_dx_unaccelerated(event);
|
||||
+ uy = libinput_event_pointer_get_dy_unaccelerated(event);
|
||||
+
|
||||
+ valuator_mask_set_unaccelerated(mask, 0, x, ux);
|
||||
+ valuator_mask_set_unaccelerated(mask, 1, y, uy);
|
||||
+ }
|
||||
+#else
|
||||
valuator_mask_set_double(mask, 0, x);
|
||||
valuator_mask_set_double(mask, 1, y);
|
||||
-
|
||||
+#endif
|
||||
xf86PostMotionEventM(dev, Relative, mask);
|
||||
}
|
||||
|
||||
@@ -1363,6 +1382,10 @@ xf86libinput_pre_init(InputDriverPtr drv,
|
||||
if (!driver_data->valuators)
|
||||
goto fail;
|
||||
|
||||
+ driver_data->valuators_unaccelerated = valuator_mask_new(2);
|
||||
+ if (!driver_data->valuators_unaccelerated)
|
||||
+ goto fail;
|
||||
+
|
||||
driver_data->scroll.vdist = 15;
|
||||
driver_data->scroll.hdist = 15;
|
||||
|
||||
@@ -1434,6 +1457,8 @@ fail:
|
||||
fd_pop(&driver_context, pInfo->fd);
|
||||
if (driver_data->valuators)
|
||||
valuator_mask_free(&driver_data->valuators);
|
||||
+ if (driver_data->valuators_unaccelerated)
|
||||
+ valuator_mask_free(&driver_data->valuators_unaccelerated);
|
||||
free(path);
|
||||
free(driver_data);
|
||||
return BadValue;
|
||||
--
|
||||
2.4.1
|
||||
|
@ -5,7 +5,7 @@
|
||||
Summary: Xorg X11 libinput input driver
|
||||
Name: xorg-x11-drv-libinput
|
||||
Version: 0.10.0
|
||||
Release: 2%{?dist}
|
||||
Release: 3%{?dist}
|
||||
URL: http://ww.x.org
|
||||
License: MIT
|
||||
|
||||
@ -13,6 +13,8 @@ Source0: ftp://ftp.x.org/pub/individual/driver/%{tarball}-%{version}.tar.bz2
|
||||
Source1: 90-libinput.conf
|
||||
|
||||
Patch01: 0001-Only-init-abs-axes-if-we-don-t-have-acceleration.patch
|
||||
# Bug 1208992 - Mouse cursor doesn't move when moving the physical mouse slowly
|
||||
Patch02: 0001-Use-the-new-unaccelerated-valuator-ValuatorMask-feat.patch
|
||||
|
||||
ExcludeArch: s390 s390x
|
||||
|
||||
@ -26,6 +28,9 @@ Requires: Xorg %(xserver-sdk-abi-requires xinput)
|
||||
Requires: xkeyboard-config
|
||||
Requires: libinput >= 0.8.0
|
||||
|
||||
# For the unaccelerated valuator masks, drop in F23
|
||||
Requires: xorg-x11-server-Xorg >= 1.17.1-14
|
||||
|
||||
%description
|
||||
A generic input driver for the X.Org X11 X server based on libinput,
|
||||
supporting all devices.
|
||||
@ -33,6 +38,7 @@ supporting all devices.
|
||||
%prep
|
||||
%setup -q -n %{tarball}-%{version}
|
||||
%patch01 -p1
|
||||
%patch02 -p1
|
||||
|
||||
%build
|
||||
autoreconf --force -v --install || exit 1
|
||||
@ -68,6 +74,10 @@ Xorg X11 libinput input driver development files.
|
||||
%{_includedir}/xorg/libinput-properties.h
|
||||
|
||||
%changelog
|
||||
* Tue May 26 2015 Peter Hutterer <peter.hutterer@redhat.com> 0.10.0-3
|
||||
- Use the new unnaccelerated valuator masks, fixes nonmoving mouse in SDL
|
||||
(#1208992)
|
||||
|
||||
* Fri May 22 2015 Peter Hutterer <peter.hutterer@redhat.com> 0.10.0-2
|
||||
- Init mixed rel/abs devices as rel devices (#1223619)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user