From acb06415255c5e85360b51edb5d8d5282e4da9d4b7e58f6d572e1b905a2c76da Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Mon, 11 Apr 2016 23:28:12 +0000 Subject: [PATCH] Accepting request 387675 from home:Zaitor:branches:X11:Wayland - Update to version 1.2.3: * The handling of the T450 jerky cursor motion had a bug, causing libinput to complain about invalid states (fdo#94601). This is fixed now. * The top software buttons on the T440 generation touchpads had their left-handed button mapping applied twice, effectively cancelling it out (fdo#94733). Fixed now, the top buttons will be mapped correctly in left-handed mode. * The Wacom airbrush pen slider range now sends the correct [-1, 1] normalized range. * And finally, the config call to fetch the default profile libinput_device_config_accel_get_default_profile() actually returns the default profile now. - Drop libinput-touchpad-fixes.patch: Fixed upstream. OBS-URL: https://build.opensuse.org/request/show/387675 OBS-URL: https://build.opensuse.org/package/show/X11:Wayland/libinput?expand=0&rev=72 --- libinput-1.2.2.tar.xz | 3 - libinput-1.2.2.tar.xz.sig | Bin 72 -> 0 bytes libinput-1.2.3.tar.xz | 3 + libinput-1.2.3.tar.xz.sig | Bin 0 -> 72 bytes libinput-touchpad-fixes.patch | 259 ---------------------------------- libinput.changes | 18 +++ libinput.spec | 7 +- 7 files changed, 23 insertions(+), 267 deletions(-) delete mode 100644 libinput-1.2.2.tar.xz delete mode 100644 libinput-1.2.2.tar.xz.sig create mode 100644 libinput-1.2.3.tar.xz create mode 100644 libinput-1.2.3.tar.xz.sig delete mode 100644 libinput-touchpad-fixes.patch diff --git a/libinput-1.2.2.tar.xz b/libinput-1.2.2.tar.xz deleted file mode 100644 index ff8406f..0000000 --- a/libinput-1.2.2.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:08ac5b3620d86df1cdb4970c4137c8746c9f4b9f0c8e7dfab49858dbceb8f367 -size 857176 diff --git a/libinput-1.2.2.tar.xz.sig b/libinput-1.2.2.tar.xz.sig deleted file mode 100644 index f7348298042c98c4d825635499cc1adb5b3b9dfae4a555d6d3c69a5908c07e12..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 zcmV-O0Jr~$Mg#y60ssaD0#@f(n*a(45aK(2aI|Oezv&SGo;Vh+-r3?d$v-H+>*;v1|5 -Date: Wed, 30 Mar 2016 15:31:07 +1000 -Subject: touchpad: fix left-handed top software trackpoint buttons - -The previous code would swap the top software buttons depending on the -touchpad's left-handed setting, not the trackpoint setting. Changing both -devices to left-handed resulted in a double-swap, i.e. the trackpoint was -always right-handed. - -https://bugs.freedesktop.org/show_bug.cgi?id=94733 - -Signed-off-by: Peter Hutterer -Reviewed-by: Hans de Goede -(cherry picked from commit 1ecf6d7a607c5f481eb9b3b6365d7b55a0f18c53) - -diff --git a/src/evdev-mt-touchpad-buttons.c b/src/evdev-mt-touchpad-buttons.c -index 82c99c7..076eab0 100644 ---- a/src/evdev-mt-touchpad-buttons.c -+++ b/src/evdev-mt-touchpad-buttons.c -@@ -963,6 +963,7 @@ tp_post_clickpadbutton_buttons(struct tp_dispatch *tp, uint64_t time) - uint32_t current, old, button, is_top; - enum libinput_button_state state; - enum { AREA = 0x01, LEFT = 0x02, MIDDLE = 0x04, RIGHT = 0x08 }; -+ bool want_left_handed = true; - - current = tp->buttons.state; - old = tp->buttons.old_state; -@@ -1008,14 +1009,22 @@ tp_post_clickpadbutton_buttons(struct tp_dispatch *tp, uint64_t time) - return 0; - } - -- if ((area & MIDDLE) || ((area & LEFT) && (area & RIGHT))) -- button = evdev_to_left_handed(tp->device, BTN_MIDDLE); -- else if (area & RIGHT) -- button = evdev_to_left_handed(tp->device, BTN_RIGHT); -- else if (area & LEFT) -- button = evdev_to_left_handed(tp->device, BTN_LEFT); -- else /* main or no area (for clickfinger) is always BTN_LEFT */ -+ if ((area & MIDDLE) || ((area & LEFT) && (area & RIGHT))) { -+ button = BTN_MIDDLE; -+ } else if (area & RIGHT) { -+ button = BTN_RIGHT; -+ } else if (area & LEFT) { - button = BTN_LEFT; -+ } else { /* main or no area (for clickfinger) is always BTN_LEFT */ -+ button = BTN_LEFT; -+ want_left_handed = false; -+ } -+ -+ if (is_top) -+ want_left_handed = false; -+ -+ if (want_left_handed) -+ button = evdev_to_left_handed(tp->device, button); - - tp->buttons.active = button; - tp->buttons.active_is_topbutton = is_top; -diff --git a/test/trackpoint.c b/test/trackpoint.c -index 567fba8..5a68b19 100644 ---- a/test/trackpoint.c -+++ b/test/trackpoint.c -@@ -150,6 +150,135 @@ START_TEST(trackpoint_scroll_source) - } - END_TEST - -+START_TEST(trackpoint_topsoftbuttons_left_handed_trackpoint) -+{ -+ struct litest_device *touchpad = litest_current_device(); -+ struct litest_device *trackpoint; -+ struct libinput *li = touchpad->libinput; -+ enum libinput_config_status status; -+ struct libinput_event *event; -+ struct libinput_device *device; -+ -+ trackpoint = litest_add_device(li, LITEST_TRACKPOINT); -+ litest_drain_events(li); -+ /* touchpad right-handed, trackpoint left-handed */ -+ status = libinput_device_config_left_handed_set( -+ trackpoint->libinput_device, 1); -+ ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS); -+ -+ litest_touch_down(touchpad, 0, 5, 5); -+ libinput_dispatch(li); -+ litest_button_click(touchpad, BTN_LEFT, true); -+ libinput_dispatch(li); -+ -+ event = libinput_get_event(li); -+ litest_is_button_event(event, -+ BTN_RIGHT, -+ LIBINPUT_BUTTON_STATE_PRESSED); -+ device = libinput_event_get_device(event); -+ ck_assert(device == trackpoint->libinput_device); -+ libinput_event_destroy(event); -+ -+ litest_button_click(touchpad, BTN_LEFT, false); -+ libinput_dispatch(li); -+ event = libinput_get_event(li); -+ litest_is_button_event(event, -+ BTN_RIGHT, -+ LIBINPUT_BUTTON_STATE_RELEASED); -+ device = libinput_event_get_device(event); -+ ck_assert(device == trackpoint->libinput_device); -+ libinput_event_destroy(event); -+ -+ litest_delete_device(trackpoint); -+} -+END_TEST -+ -+START_TEST(trackpoint_topsoftbuttons_left_handed_touchpad) -+{ -+ struct litest_device *touchpad = litest_current_device(); -+ struct litest_device *trackpoint; -+ struct libinput *li = touchpad->libinput; -+ enum libinput_config_status status; -+ struct libinput_event *event; -+ struct libinput_device *device; -+ -+ trackpoint = litest_add_device(li, LITEST_TRACKPOINT); -+ litest_drain_events(li); -+ /* touchpad left-handed, trackpoint right-handed */ -+ status = libinput_device_config_left_handed_set( -+ touchpad->libinput_device, 1); -+ ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS); -+ -+ litest_touch_down(touchpad, 0, 5, 5); -+ libinput_dispatch(li); -+ litest_button_click(touchpad, BTN_LEFT, true); -+ libinput_dispatch(li); -+ -+ event = libinput_get_event(li); -+ litest_is_button_event(event, BTN_LEFT, LIBINPUT_BUTTON_STATE_PRESSED); -+ device = libinput_event_get_device(event); -+ ck_assert(device == trackpoint->libinput_device); -+ libinput_event_destroy(event); -+ -+ litest_button_click(touchpad, BTN_LEFT, false); -+ libinput_dispatch(li); -+ event = libinput_get_event(li); -+ litest_is_button_event(event, -+ BTN_LEFT, -+ LIBINPUT_BUTTON_STATE_RELEASED); -+ device = libinput_event_get_device(event); -+ ck_assert(device == trackpoint->libinput_device); -+ libinput_event_destroy(event); -+ -+ litest_delete_device(trackpoint); -+} -+END_TEST -+ -+START_TEST(trackpoint_topsoftbuttons_left_handed_both) -+{ -+ struct litest_device *touchpad = litest_current_device(); -+ struct litest_device *trackpoint; -+ struct libinput *li = touchpad->libinput; -+ enum libinput_config_status status; -+ struct libinput_event *event; -+ struct libinput_device *device; -+ -+ trackpoint = litest_add_device(li, LITEST_TRACKPOINT); -+ litest_drain_events(li); -+ /* touchpad left-handed, trackpoint left-handed */ -+ status = libinput_device_config_left_handed_set( -+ touchpad->libinput_device, 1); -+ ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS); -+ status = libinput_device_config_left_handed_set( -+ trackpoint->libinput_device, 1); -+ ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS); -+ -+ litest_touch_down(touchpad, 0, 5, 5); -+ libinput_dispatch(li); -+ litest_button_click(touchpad, BTN_LEFT, true); -+ libinput_dispatch(li); -+ -+ event = libinput_get_event(li); -+ litest_is_button_event(event, -+ BTN_RIGHT, -+ LIBINPUT_BUTTON_STATE_PRESSED); -+ device = libinput_event_get_device(event); -+ ck_assert(device == trackpoint->libinput_device); -+ libinput_event_destroy(event); -+ -+ litest_button_click(touchpad, BTN_LEFT, false); -+ libinput_dispatch(li); -+ event = libinput_get_event(li); -+ litest_is_button_event(event, -+ BTN_RIGHT, -+ LIBINPUT_BUTTON_STATE_RELEASED); -+ device = libinput_event_get_device(event); -+ ck_assert(device == trackpoint->libinput_device); -+ libinput_event_destroy(event); -+ -+ litest_delete_device(trackpoint); -+} -+END_TEST - void - litest_setup_tests(void) - { -@@ -157,4 +286,7 @@ litest_setup_tests(void) - litest_add("trackpoint:middlebutton", trackpoint_middlebutton_noscroll, LITEST_POINTINGSTICK, LITEST_ANY); - litest_add("trackpoint:scroll", trackpoint_scroll, LITEST_POINTINGSTICK, LITEST_ANY); - litest_add("trackpoint:scroll", trackpoint_scroll_source, LITEST_POINTINGSTICK, LITEST_ANY); -+ litest_add("trackpoint:left-handed", trackpoint_topsoftbuttons_left_handed_trackpoint, LITEST_TOPBUTTONPAD, LITEST_ANY); -+ litest_add("trackpoint:left-handed", trackpoint_topsoftbuttons_left_handed_touchpad, LITEST_TOPBUTTONPAD, LITEST_ANY); -+ litest_add("trackpoint:left-handed", trackpoint_topsoftbuttons_left_handed_both, LITEST_TOPBUTTONPAD, LITEST_ANY); - } --- -cgit v0.10.2 - - -From 2253cf69cbf6861003c2c8396bf0cc11fbd83612 Mon Sep 17 00:00:00 2001 -From: Peter Hutterer -Date: Tue, 29 Mar 2016 13:34:00 +1000 -Subject: touchpad: only post motion events if we have motion - -Because our delta calculation factors in previous events on touchpads (to -reduce jitter) we may get a nonzero delta if we have an event that doesn't -actually change x or y. - -Drop the t->dirty workaround introduced in a608d9d, an event that virtually -disappears can mess up our state machines. - -Signed-off-by: Peter Hutterer -Reviewed-by: Hans de Goede -(cherry picked from commit bc17185f426dae7a1ea4df6ba3459083c2d51f9b) - -diff --git a/src/evdev-mt-touchpad-gestures.c b/src/evdev-mt-touchpad-gestures.c -index 3c8f5a7..7bbd3b8 100644 ---- a/src/evdev-mt-touchpad-gestures.c -+++ b/src/evdev-mt-touchpad-gestures.c -@@ -500,7 +500,8 @@ tp_gesture_post_events(struct tp_dispatch *tp, uint64_t time) - - switch (tp->gesture.finger_count) { - case 1: -- tp_gesture_post_pointer_motion(tp, time); -+ if (tp->queued & TOUCHPAD_EVENT_MOTION) -+ tp_gesture_post_pointer_motion(tp, time); - break; - case 2: - case 3: -diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c -index d0a8e27..082493c 100644 ---- a/src/evdev-mt-touchpad.c -+++ b/src/evdev-mt-touchpad.c -@@ -904,10 +904,7 @@ tp_need_motion_history_reset(struct tp_dispatch *tp, uint64_t time) - if (tp->device->model_flags & EVDEV_MODEL_LENOVO_T450_TOUCHPAD) { - if (tp->queued & TOUCHPAD_EVENT_MOTION) { - if (tp->quirks.nonmotion_event_count > 10) { -- struct tp_touch *t; -- -- tp_for_each_touch(tp, t) -- t->dirty = false; -+ tp->queued &= ~TOUCHPAD_EVENT_MOTION; - rc = true; - } - tp->quirks.nonmotion_event_count = 0; --- -cgit v0.10.2 - diff --git a/libinput.changes b/libinput.changes index b4be95e..2010195 100644 --- a/libinput.changes +++ b/libinput.changes @@ -1,3 +1,21 @@ +------------------------------------------------------------------- +Mon Apr 11 22:10:09 UTC 2016 - zaitor@opensuse.org + +- Update to version 1.2.3: + * The handling of the T450 jerky cursor motion had a bug, causing + libinput to complain about invalid states (fdo#94601). This is + fixed now. + * The top software buttons on the T440 generation touchpads had + their left-handed button mapping applied twice, effectively + cancelling it out (fdo#94733). Fixed now, the top buttons will + be mapped correctly in left-handed mode. + * The Wacom airbrush pen slider range now sends the correct + [-1, 1] normalized range. + * And finally, the config call to fetch the default profile + libinput_device_config_accel_get_default_profile() actually + returns the default profile now. +- Drop libinput-touchpad-fixes.patch: Fixed upstream. + ------------------------------------------------------------------- Thu Apr 7 16:07:03 UTC 2016 - zaitor@opensuse.org diff --git a/libinput.spec b/libinput.spec index 18c4434..a809d1e 100644 --- a/libinput.spec +++ b/libinput.spec @@ -18,8 +18,8 @@ Name: libinput %define lname libinput10 -%define rversion 1.2.2 -Version: 1.2.2 +%define rversion 1.2.3 +Version: 1.2.3 Release: 0 Summary: Input device and event processing library License: MIT @@ -33,8 +33,6 @@ Source: http://freedesktop.org/software/libinput/%name-%rversion.tar.xz Source2: http://freedesktop.org/software/libinput/%name-%rversion.tar.xz.sig Source3: baselibs.conf Source4: %name.keyring -# PATCH-FIX-UPSTREAM libinput-touchpad-fixes.patch fdo#94733 zaitor@opensuse.org -- Add 2 upstream touchpad fixes. -Patch: libinput-touchpad-fixes.patch #git#BuildRequires: autoconf >= 2.64 #git#BuildRequires: automake >= 1.11 #git#BuildRequires: libtool >= 2.2 @@ -102,7 +100,6 @@ to develop applications that require libinput. %prep %setup -qn %name-%rversion -%patch -p1 %build if [ ! -e configure ]; then