Hi,

On 22-08-16 08:17, Peter Hutterer wrote:
If a touch was down (and up again) before the device was switched to edge
scrolling, libinput reported an error message:
  litest error: libinput bug: unexpected scroll event 0 in area state

While edge scrolling was disabled, any new touch would be set to the area
state but it was never reset on touch release.

https://bugs.freedesktop.org/show_bug.cgi?id=97425

Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>

Looks good to me:

Reviewed-by: Hans de Goede <hdego...@redhat.com>

Regards,

Hans


---
 src/evdev-mt-touchpad-edge-scroll.c | 3 +++
 test/touchpad.c                     | 8 ++++++++
 2 files changed, 11 insertions(+)

diff --git a/src/evdev-mt-touchpad-edge-scroll.c 
b/src/evdev-mt-touchpad-edge-scroll.c
index 081d2c4..1d30bca 100644
--- a/src/evdev-mt-touchpad-edge-scroll.c
+++ b/src/evdev-mt-touchpad-edge-scroll.c
@@ -338,6 +338,9 @@ tp_edge_scroll_handle_state(struct tp_dispatch *tp, 
uint64_t time)
                        if (t->state == TOUCH_BEGIN)
                                t->scroll.edge_state =
                                        EDGE_SCROLL_TOUCH_STATE_AREA;
+                       else if (t->state == TOUCH_END)
+                               t->scroll.edge_state =
+                                       EDGE_SCROLL_TOUCH_STATE_NONE;
                }
                return;
        }
diff --git a/test/touchpad.c b/test/touchpad.c
index 06bde13..ea20036 100644
--- a/test/touchpad.c
+++ b/test/touchpad.c
@@ -429,6 +429,10 @@ START_TEST(touchpad_edge_scroll_vert)
        struct litest_device *dev = litest_current_device();
        struct libinput *li = dev->libinput;

+       litest_touch_down(dev, 0, 99, 20);
+       litest_touch_move_to(dev, 0, 99, 20, 99, 80, 10, 0);
+       litest_touch_up(dev, 0);
+
        litest_drain_events(li);
        litest_enable_edge_scroll(dev);

@@ -466,6 +470,10 @@ START_TEST(touchpad_edge_scroll_horiz)
        struct litest_device *dev = litest_current_device();
        struct libinput *li = dev->libinput;

+       litest_touch_down(dev, 0, 99, 20);
+       litest_touch_move_to(dev, 0, 99, 20, 99, 80, 10, 0);
+       litest_touch_up(dev, 0);
+
        if (!touchpad_has_horiz_edge_scroll_size(dev))
                return;


_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to