Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libinput for openSUSE:Factory 
checked in at 2021-10-04 18:38:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libinput (Old)
 and      /work/SRC/openSUSE:Factory/.libinput.new.2443 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libinput"

Mon Oct  4 18:38:56 2021 rev:104 rq:921955 version:1.19.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/libinput/libinput.changes        2021-09-20 
23:32:03.735092713 +0200
+++ /work/SRC/openSUSE:Factory/.libinput.new.2443/libinput.changes      
2021-10-04 18:38:58.177960513 +0200
@@ -1,0 +2,10 @@
+Tue Sep 28 08:28:21 UTC 2021 - Jan Engelhardt <jeng...@inai.de>
+
+- Update to release 1.19.1
+  * New: Detects (and works around) buggy devices that claim to
+    have a high-resolution scroll wheel but which do not actually
+    send events.
+  * New assumption that any non-bluetooth touchpad is internal.
+  * Jumping cursor warning has been reduced once again.
+
+-------------------------------------------------------------------

Old:
----
  libinput-1.19.0.tar.xz
  libinput-1.19.0.tar.xz.sig

New:
----
  libinput-1.19.1.tar.xz
  libinput-1.19.1.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libinput.spec ++++++
--- /var/tmp/diff_new_pack.MtyMKP/_old  2021-10-04 18:38:58.937961748 +0200
+++ /var/tmp/diff_new_pack.MtyMKP/_new  2021-10-04 18:38:58.941961754 +0200
@@ -37,7 +37,7 @@
 %define lname  libinput10
 %define pname  libinput
 Name:           libinput%{?xsuffix}
-Version:        1.19.0
+Version:        1.19.1
 Release:        0
 Summary:        Input device and event processing library
 License:        MIT

++++++ libinput-1.19.0.tar.xz -> libinput-1.19.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libinput-1.19.0/doc/user/incorrectly-enabled-hires.rst 
new/libinput-1.19.1/doc/user/incorrectly-enabled-hires.rst
--- old/libinput-1.19.0/doc/user/incorrectly-enabled-hires.rst  1970-01-01 
01:00:00.000000000 +0100
+++ new/libinput-1.19.1/doc/user/incorrectly-enabled-hires.rst  2021-09-28 
03:51:11.888798000 +0200
@@ -0,0 +1,62 @@
+.. _incorrectly_enabled_hires:
+
+==============================================================================
+Incorrectly enabled high-resolution scroll
+==============================================================================
+
+Some devices might announce support for high-resolution scroll wheel by 
enabling
+``REL_WHEEL_HI_RES`` and/or ``REL_HWHEEL_HI_RES`` but never send a
+high-resolution scroll event.
+
+When the first low-resolution scroll event is received without any previous
+high-resolution event, libinput prints a bug warning with the text **"device
+supports high-resolution scroll but only low-resolution events have been
+received"** and a link to this page.
+
+.. note:: This warning will be printed only once
+
+In most cases this is a bug on the device firmware, the kernel driver or in a
+software used to create user-space devices through uinput.
+
+Once the bug is detected, libinput will start emulating high-resolution scroll
+events.
+
+------------------------------------------------------------------------------
+Detecting and fixing the issue
+------------------------------------------------------------------------------
+
+Events sent by a buggy device can be shown in the
+:ref:`libinput record <libinput-record>` output for the device. Notice that
+``REL_WHEEL_HI_RES`` and ``REL_HWHEEL_HI_RES`` are set but only ``REL_WHEEL``
+events are sent: ::
+
+    # Supported Events:
+    # Event type 0 (EV_SYN)
+    # Event type 1 (EV_KEY)
+    #   Event code 272 (BTN_LEFT)
+    # Event type 2 (EV_REL)
+    #   Event code 0 (REL_X)
+    #   Event code 1 (REL_Y)
+    #   Event code 6 (REL_HWHEEL)
+    #   Event code 8 (REL_WHEEL)
+    #   Event code 11 (REL_WHEEL_HI_RES)
+    #   Event code 12 (REL_HWHEEL_HI_RES)
+    [...]
+    quirks:
+    events:
+    - evdev:
+        - [  0,      0,   2,   8,       1] # EV_REL / REL_WHEEL                
 1
+        - [  0,      0,   0,   0,       0] # ------------ SYN_REPORT (0) 
---------- +0ms
+    - evdev:
+        - [  0,  15126,   2,   8,       1] # EV_REL / REL_WHEEL                
 1
+        - [  0,  15126,   0,   0,       0] # ------------ SYN_REPORT (0) 
---------- +15ms
+    - evdev:
+        - [  0,  30250,   2,   8,       1] # EV_REL / REL_WHEEL                
 1
+        - [  0,  30250,   0,   0,       0] # ------------ SYN_REPORT (0) 
---------- +15ms
+
+The issue can be fixed by adding a quirk to unset the ``REL_WHEEL_HI_RES`` and
+``REL_HWHEEL_HI_RES`` event codes: ::
+
+    AttrEventCodeDisable=REL_WHEEL_HI_RES;REL_HWHEEL_HI_RES;
+
+Please see :ref:`device-quirks` for details.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/doc/user/meson.build 
new/libinput-1.19.1/doc/user/meson.build
--- old/libinput-1.19.0/doc/user/meson.build    2021-09-14 10:30:52.774955300 
+0200
+++ new/libinput-1.19.1/doc/user/meson.build    2021-09-28 03:51:11.888798000 
+0200
@@ -50,6 +50,7 @@
        [ 'faqs.rst', 'faq.html'],
        [ 'features.rst', 'features.html'],
        [ 'gestures.rst', 'gestures.html'],
+       [ 'incorrectly-enabled-hires.rst', 'incorrectly-enabled-hires.html'],
        [ 'middle-button-emulation.rst', 'middle_button_emulation.html'],
        [ 'normalization-of-relative-motion.rst', 'motion_normalization.html'],
        [ 'palm-detection.rst', 'palm_detection.html'],
@@ -143,6 +144,7 @@
        'device-quirks.rst',
        'faqs.rst',
        'gestures.rst',
+       'incorrectly-enabled-hires.rst',
        'middle-button-emulation.rst',
        'normalization-of-relative-motion.rst',
        'palm-detection.rst',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/doc/user/troubleshooting.rst 
new/libinput-1.19.1/doc/user/troubleshooting.rst
--- old/libinput-1.19.0/doc/user/troubleshooting.rst    2021-09-14 
10:30:52.779955400 +0200
+++ new/libinput-1.19.1/doc/user/troubleshooting.rst    2021-09-28 
03:51:11.895798000 +0200
@@ -14,3 +14,4 @@
    touchpad-pressure-debugging.rst
    trackpoint-configuration.rst
    tablet-debugging.rst
+   incorrectly-enabled-hires.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/meson.build 
new/libinput-1.19.1/meson.build
--- old/libinput-1.19.0/meson.build     2021-09-14 10:30:52.780955300 +0200
+++ new/libinput-1.19.1/meson.build     2021-09-28 03:51:11.896798000 +0200
@@ -1,5 +1,5 @@
 project('libinput', 'c',
-       version : '1.19.0',
+       version : '1.19.1',
        license : 'MIT/Expat',
        default_options : [ 'c_std=gnu99', 'warning_level=2' ],
        meson_version : '>= 0.49.0')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/quirks/50-system-dell.quirks 
new/libinput-1.19.1/quirks/50-system-dell.quirks
--- old/libinput-1.19.0/quirks/50-system-dell.quirks    2021-09-14 
10:30:52.781955200 +0200
+++ new/libinput-1.19.1/quirks/50-system-dell.quirks    2021-09-28 
03:51:11.897798000 +0200
@@ -14,7 +14,7 @@
 [Dell Inspiron 15R N5110 Touchpad]
 MatchUdevType=touchpad
 MatchName=*AlpsPS/2 ALPS GlidePoint
-MatchDMIModalias=dmi:*svnDellInc.:*pnInspironN5110*
+MatchDMIModalias=dmi:*bvrA07*svnDellInc.:*pnInspironN5110*
 AttrPressureRange=100:95
 
 [Dell Latitude E5510 Touchpad]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/quirks/50-system-prestigio.quirks 
new/libinput-1.19.1/quirks/50-system-prestigio.quirks
--- old/libinput-1.19.0/quirks/50-system-prestigio.quirks       1970-01-01 
01:00:00.000000000 +0100
+++ new/libinput-1.19.1/quirks/50-system-prestigio.quirks       2021-09-28 
03:51:11.897798000 +0200
@@ -0,0 +1,7 @@
+# Clickpad that announces BTN_RIGHT
+# https://gitlab.freedesktop.org/libinput/libinput/-/issues/674
+[Prestigio Smartbook 141 C2 Touchpad]
+MatchName=SYNA3602:00 0911:5288 Touchpad
+MatchUdevType=touchpad
+MatchDMIModalias=dmi:*svnPrestigio:*pnPSB141C02*
+AttrEventCodeDisable=BTN_RIGHT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/src/evdev-fallback.c 
new/libinput-1.19.1/src/evdev-fallback.c
--- old/libinput-1.19.0/src/evdev-fallback.c    2021-09-14 10:30:52.782955400 
+0200
+++ new/libinput-1.19.1/src/evdev-fallback.c    2021-09-28 03:51:11.898798000 
+0200
@@ -235,6 +235,18 @@
        if (!(device->seat_caps & EVDEV_DEVICE_POINTER))
                return;
 
+       if (!dispatch->wheel.emulate_hi_res_wheel &&
+           !dispatch->wheel.hi_res_event_received &&
+           (dispatch->wheel.lo_res.x != 0 || dispatch->wheel.lo_res.y != 0)) {
+               evdev_log_bug_kernel(device,
+                                    "device supports high-resolution scroll 
but only low-resolution events have been received.\n"
+                                    "See %s/incorrectly-enabled-hires.html for 
details\n",
+                                    HTTP_DOC_LINK);
+               dispatch->wheel.emulate_hi_res_wheel = true;
+               dispatch->wheel.hi_res.x = dispatch->wheel.lo_res.x * 120;
+               dispatch->wheel.hi_res.y = dispatch->wheel.lo_res.y * 120;
+       }
+
        if (dispatch->wheel.is_inhibited) {
                dispatch->wheel.hi_res.x = 0;
                dispatch->wheel.hi_res.y = 0;
@@ -897,10 +909,12 @@
                break;
        case REL_WHEEL_HI_RES:
                dispatch->wheel.hi_res.y += e->value;
+               dispatch->wheel.hi_res_event_received = true;
                dispatch->pending_event |= EVDEV_WHEEL;
                break;
        case REL_HWHEEL_HI_RES:
                dispatch->wheel.hi_res.x += e->value;
+               dispatch->wheel.hi_res_event_received = true;
                dispatch->pending_event |= EVDEV_WHEEL;
                break;
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/src/evdev-fallback.h 
new/libinput-1.19.1/src/evdev-fallback.h
--- old/libinput-1.19.0/src/evdev-fallback.h    2021-09-14 10:30:52.782955400 
+0200
+++ new/libinput-1.19.1/src/evdev-fallback.h    2021-09-28 03:51:11.898798000 
+0200
@@ -102,6 +102,7 @@
                struct device_coords hi_res;
                bool emulate_hi_res_wheel;
                bool is_inhibited;
+               bool hi_res_event_received;
        } wheel;
 
        struct {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/src/evdev-mt-touchpad.c 
new/libinput-1.19.1/src/evdev-mt-touchpad.c
--- old/libinput-1.19.0/src/evdev-mt-touchpad.c 2021-09-14 10:30:52.783955300 
+0200
+++ new/libinput-1.19.1/src/evdev-mt-touchpad.c 2021-09-28 03:51:11.899798000 
+0200
@@ -1999,9 +1999,15 @@
 tp_interface_remove(struct evdev_dispatch *dispatch)
 {
        struct tp_dispatch *tp = tp_dispatch(dispatch);
+       struct evdev_paired_keyboard *kbd;
 
        libinput_timer_cancel(&tp->arbitration.arbitration_timer);
 
+       list_for_each_safe(kbd, &tp->dwt.paired_keyboard_list, link) {
+               evdev_paired_keyboard_destroy(kbd);
+       }
+       tp->dwt.keyboard_active = false;
+
        tp_remove_tap(tp);
        tp_remove_buttons(tp);
        tp_remove_sendevents(tp);
@@ -2400,14 +2406,13 @@
                        struct evdev_device *trackpoint)
 {
        struct tp_dispatch *tp = (struct tp_dispatch*)touchpad->dispatch;
-       unsigned int bus_tp = libevdev_get_id_bustype(touchpad->evdev),
-                    bus_trp = libevdev_get_id_bustype(trackpoint->evdev);
+       unsigned int bus_trp = libevdev_get_id_bustype(trackpoint->evdev);
        bool tp_is_internal, trp_is_internal;
 
        if ((trackpoint->tags & EVDEV_TAG_TRACKPOINT) == 0)
                return;
 
-       tp_is_internal = bus_tp != BUS_USB && bus_tp != BUS_BLUETOOTH;
+       tp_is_internal = !!(touchpad->tags & EVDEV_TAG_INTERNAL_TOUCHPAD);
        trp_is_internal = bus_trp != BUS_USB && bus_trp != BUS_BLUETOOTH;
 
        if (tp->buttons.trackpoint == NULL &&
@@ -2724,22 +2729,15 @@
        /* The hwdb is the authority on integration, these heuristics are
         * the fallback only (they precede the hwdb too).
         *
-        * Simple approach: USB is unknown, with the exception
-        * of Apple where internal touchpads are connected over USB and it
-        * doesn't have external USB touchpads anyway.
-        *
+        * Simple approach:
         * Bluetooth touchpads are considered external, anything else is
-        * internal.
+        * internal. Except the ones from some vendors that only make external
+        * touchpads.
         */
        bustype = libevdev_get_id_bustype(device->evdev);
        vendor = libevdev_get_id_vendor(device->evdev);
 
        switch (bustype) {
-       case BUS_USB:
-               if (evdev_device_has_model_quirk(device,
-                                                QUIRK_MODEL_APPLE_TOUCHPAD))
-                        evdev_tag_touchpad_internal(device);
-               break;
        case BUS_BLUETOOTH:
                evdev_tag_touchpad_external(device);
                break;
@@ -3661,8 +3659,8 @@
        if (!use_touch_size)
                tp_init_pressure(tp, device);
 
-       /* 5 warnings per 2 hours should be enough */
-       ratelimit_init(&tp->jump.warning, s2us(2 * 60 * 60), 5);
+       /* 5 warnings per 24 hours should be enough */
+       ratelimit_init(&tp->jump.warning, h2us(24), 5);
 
        /* Set the dpi to that of the x axis, because that's what we normalize
           to when needed*/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/src/evdev.c 
new/libinput-1.19.1/src/evdev.c
--- old/libinput-1.19.0/src/evdev.c     2021-09-14 10:30:52.784955300 +0200
+++ new/libinput-1.19.1/src/evdev.c     2021-09-28 03:51:11.900797800 +0200
@@ -415,6 +415,11 @@
        struct normalized_coords delta = *delta_in;
        struct wheel_v120 v120 = *v120_in;
 
+       if (device->scroll.invert_horizontal_scrolling) {
+               delta.x *= -1;
+               v120.x *= -1;
+       }
+
        if (device->scroll.natural_scrolling_enabled) {
                delta.x *= -1;
                delta.y *= -1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/src/libinput.c 
new/libinput-1.19.1/src/libinput.c
--- old/libinput-1.19.0/src/libinput.c  2021-09-14 10:30:52.785955400 +0200
+++ new/libinput-1.19.1/src/libinput.c  2021-09-28 03:51:11.901798000 +0200
@@ -3567,7 +3567,9 @@
                           LIBINPUT_EVENT_GESTURE_SWIPE_END,
                           LIBINPUT_EVENT_GESTURE_PINCH_BEGIN,
                           LIBINPUT_EVENT_GESTURE_PINCH_UPDATE,
-                          LIBINPUT_EVENT_GESTURE_PINCH_END);
+                          LIBINPUT_EVENT_GESTURE_PINCH_END,
+                          LIBINPUT_EVENT_GESTURE_HOLD_BEGIN,
+                          LIBINPUT_EVENT_GESTURE_HOLD_END);
 
        return &event->base;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/src/libinput.h 
new/libinput-1.19.1/src/libinput.h
--- old/libinput-1.19.0/src/libinput.h  2021-09-14 10:30:52.786955400 +0200
+++ new/libinput-1.19.1/src/libinput.h  2021-09-28 03:51:11.902798000 +0200
@@ -1561,8 +1561,8 @@
  * libinput_event_pointer_get_scroll_value_v120() for a simpler API of
  * handling scroll wheel events of different step sizes.
  *
- * If the source is @ref LIBINPUT_POINTER_AXIS_SOURCE_CONTINUOUS, no
- * terminating event is guaranteed (though it may happen).
+ * If the source is @ref LIBINPUT_POINTER_AXIS_SOURCE_CONTINUOUS, libinput
+ * guarantees that a scroll sequence is terminated with a scroll value of 0.
  * The coordinate system is identical to the cursor movement, i.e. a
  * scroll value of 1 represents the equivalent relative motion of 1.
  *
@@ -1642,8 +1642,8 @@
  * libinput_event_pointer_get_scroll_value_v120() for a simpler API of
  * handling scroll wheel events of different step sizes.
  *
- * If the event is @ref LIBINPUT_EVENT_POINTER_SCROLL_CONTINUOUS, no
- * terminating event is guaranteed (though it may happen).
+ * If the event is @ref LIBINPUT_EVENT_POINTER_SCROLL_CONTINUOUS, libinput
+ * guarantees that a scroll sequence is terminated with a scroll value of 0.
  * The coordinate system is identical to the cursor movement, i.e. a
  * scroll value of 1 represents the equivalent relative motion of 1.
  *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/src/util-time.h 
new/libinput-1.19.1/src/util-time.h
--- old/libinput-1.19.0/src/util-time.h 2021-09-14 10:30:52.787955300 +0200
+++ new/libinput-1.19.1/src/util-time.h 2021-09-28 03:51:11.903797900 +0200
@@ -63,6 +63,12 @@
        return ms2us(s * 1000);
 }
 
+static inline uint64_t
+h2us(uint64_t h)
+{
+       return s2us(h * 3600);
+}
+
 static inline uint32_t
 us2ms(uint64_t us)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/test/litest.c 
new/libinput-1.19.1/test/litest.c
--- old/libinput-1.19.0/test/litest.c   2021-09-14 10:30:52.792955400 +0200
+++ new/libinput-1.19.1/test/litest.c   2021-09-28 03:51:11.907798000 +0200
@@ -1750,7 +1750,8 @@
                       va_list args)
 {
        if (strstr(format, "client bug: ") ||
-           strstr(format, "libinput bug: "))
+           strstr(format, "libinput bug: ") ||
+           strstr(format, "kernel bug: "))
                return;
 
        litest_abort_msg("Expected bug statement in log msg, aborting.\n");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/test/test-misc.c 
new/libinput-1.19.1/test/test-misc.c
--- old/libinput-1.19.0/test/test-misc.c        2021-09-14 10:30:52.793955300 
+0200
+++ new/libinput-1.19.1/test/test-misc.c        2021-09-28 03:51:11.908798000 
+0200
@@ -366,6 +366,9 @@
 
        litest_touch_down(dev, 0, 70, 30);
        litest_touch_down(dev, 1, 30, 70);
+       libinput_dispatch(li);
+       litest_timeout_gesture_hold();
+
        for (i = 0; i < 8; i++) {
                litest_push_event_frame(dev);
                litest_touch_move(dev, 0, 70 - i * 5, 30 + i * 5);
@@ -379,7 +382,7 @@
                type = libinput_event_get_type(event);
 
                if (type >= LIBINPUT_EVENT_GESTURE_SWIPE_BEGIN &&
-                   type <= LIBINPUT_EVENT_GESTURE_PINCH_END) {
+                   type <= LIBINPUT_EVENT_GESTURE_HOLD_END) {
                        struct libinput_event_gesture *g;
                        struct libinput_event *base;
                        g = libinput_event_get_gesture_event(event);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/test/test-pointer.c 
new/libinput-1.19.1/test/test-pointer.c
--- old/libinput-1.19.0/test/test-pointer.c     2021-09-14 10:30:52.793955300 
+0200
+++ new/libinput-1.19.1/test/test-pointer.c     2021-09-28 03:51:11.908798000 
+0200
@@ -803,6 +803,70 @@
 }
 END_TEST
 
+START_TEST(pointer_scroll_wheel_hires_send_only_lores_vertical)
+{
+       struct litest_device *dev = litest_current_device();
+       struct libinput *li = dev->libinput;
+
+       if (!libevdev_has_event_code(dev->evdev, EV_REL, REL_WHEEL_HI_RES) &&
+           !libevdev_has_event_code(dev->evdev, EV_REL, REL_HWHEEL_HI_RES))
+               return;
+
+       litest_drain_events(dev->libinput);
+       litest_set_log_handler_bug(li);
+
+       litest_event(dev, EV_REL, REL_WHEEL, 1);
+       litest_event(dev, EV_SYN, SYN_REPORT, 0);
+       libinput_dispatch(li);
+       test_high_and_low_wheel_events_value(dev, REL_WHEEL, -120);
+
+       litest_event(dev, EV_REL, REL_WHEEL, -1);
+       litest_event(dev, EV_SYN, SYN_REPORT, 0);
+       libinput_dispatch(li);
+       test_high_and_low_wheel_events_value(dev, REL_WHEEL, 120);
+
+       litest_event(dev, EV_REL, REL_HWHEEL, 1);
+       litest_event(dev, EV_SYN, SYN_REPORT, 0);
+       libinput_dispatch(li);
+       test_high_and_low_wheel_events_value(dev, REL_HWHEEL, 120);
+
+       litest_assert_empty_queue(li);
+       litest_restore_log_handler(li);
+}
+END_TEST
+
+START_TEST(pointer_scroll_wheel_hires_send_only_lores_horizontal)
+{
+       struct litest_device *dev = litest_current_device();
+       struct libinput *li = dev->libinput;
+
+       if (!libevdev_has_event_code(dev->evdev, EV_REL, REL_WHEEL_HI_RES) &&
+           !libevdev_has_event_code(dev->evdev, EV_REL, REL_HWHEEL_HI_RES))
+               return;
+
+       litest_drain_events(dev->libinput);
+       litest_set_log_handler_bug(li);
+
+       litest_event(dev, EV_REL, REL_HWHEEL, 2);
+       litest_event(dev, EV_SYN, SYN_REPORT, 0);
+       libinput_dispatch(li);
+       test_high_and_low_wheel_events_value(dev, REL_HWHEEL, 240);
+
+       litest_event(dev, EV_REL, REL_WHEEL, -1);
+       litest_event(dev, EV_SYN, SYN_REPORT, 0);
+       libinput_dispatch(li);
+       test_high_and_low_wheel_events_value(dev, REL_WHEEL, 120);
+
+       litest_event(dev, EV_REL, REL_HWHEEL, 1);
+       litest_event(dev, EV_SYN, SYN_REPORT, 0);
+       libinput_dispatch(li);
+       test_high_and_low_wheel_events_value(dev, REL_HWHEEL, 120);
+
+       litest_assert_empty_queue(li);
+       litest_restore_log_handler(li);
+}
+END_TEST
+
 START_TEST(pointer_scroll_natural_defaults)
 {
        struct litest_device *dev = litest_current_device();
@@ -3429,6 +3493,8 @@
        litest_add_for_device(pointer_scroll_wheel_pressed_noscroll, 
LITEST_MOUSE);
        litest_add_for_device(pointer_scroll_hi_res_wheel_pressed_noscroll, 
LITEST_MOUSE);
        litest_add(pointer_scroll_wheel_hires, LITEST_WHEEL, LITEST_TABLET);
+       litest_add(pointer_scroll_wheel_hires_send_only_lores_vertical, 
LITEST_WHEEL, LITEST_TABLET);
+       litest_add(pointer_scroll_wheel_hires_send_only_lores_horizontal, 
LITEST_WHEEL, LITEST_TABLET);
        litest_add(pointer_scroll_button, LITEST_RELATIVE|LITEST_BUTTON, 
LITEST_ANY);
        litest_add(pointer_scroll_button_noscroll, 
LITEST_ABSOLUTE|LITEST_BUTTON, LITEST_RELATIVE);
        litest_add(pointer_scroll_button_noscroll, LITEST_ANY, 
LITEST_RELATIVE|LITEST_BUTTON);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/test/test-touchpad.c 
new/libinput-1.19.1/test/test-touchpad.c
--- old/libinput-1.19.0/test/test-touchpad.c    2021-09-14 10:30:52.795955400 
+0200
+++ new/libinput-1.19.1/test/test-touchpad.c    2021-09-28 03:51:11.910797800 
+0200
@@ -5119,6 +5119,23 @@
 }
 END_TEST
 
+START_TEST(touchpad_dwt_remove_before_keyboard)
+{
+       struct litest_device *keyboard = litest_current_device();
+       struct litest_device *touchpad;
+       struct libinput *li = keyboard->libinput;
+
+       touchpad = litest_add_device(li, LITEST_SYNAPTICS_RMI4);
+       ck_assert(has_disable_while_typing(touchpad));
+
+       libinput_dispatch(li);
+
+       /* remove the touchpad before the keyboard.
+        * this test can fail in valgrind only */
+       litest_delete_device(touchpad);
+}
+END_TEST
+
 START_TEST(touchpad_dwt_multiple_keyboards_bothkeys)
 {
        struct litest_device *touchpad = litest_current_device();
@@ -7293,6 +7310,7 @@
        litest_add_for_device(touchpad_dwt_multiple_keyboards_bothkeys, 
LITEST_SYNAPTICS_I2C);
        
litest_add_for_device(touchpad_dwt_multiple_keyboards_bothkeys_modifier, 
LITEST_SYNAPTICS_I2C);
        litest_add_ranged_for_device(touchpad_dwt_multiple_keyboards_remove, 
LITEST_SYNAPTICS_I2C, &twice);
+       litest_add_for_device(touchpad_dwt_remove_before_keyboard, 
LITEST_KEYBOARD);
 
        litest_add(touchpad_thumb_lower_area_movement, LITEST_CLICKPAD, 
LITEST_ANY);
        litest_add(touchpad_thumb_lower_area_movement_rethumb, LITEST_CLICKPAD, 
LITEST_ANY);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.19.0/test/test-utils.c 
new/libinput-1.19.1/test/test-utils.c
--- old/libinput-1.19.0/test/test-utils.c       2021-09-14 10:30:52.796955300 
+0200
+++ new/libinput-1.19.1/test/test-utils.c       2021-09-28 03:51:11.911798000 
+0200
@@ -707,6 +707,7 @@
        ck_assert_int_eq(ns2us(10000), 10);
        ck_assert_int_eq(ms2us(10), 10000);
        ck_assert_int_eq(s2us(1), 1000000);
+       ck_assert_int_eq(h2us(2), s2us(2 * 60 * 60));
        ck_assert_int_eq(us2ms(10000), 10);
 }
 END_TEST

Reply via email to