touchpad: Put state unrolling code in a tp_clear_state() helper function
authorHans de Goede <hdegoede@redhat.com>
Tue, 16 Sep 2014 14:22:40 +0000 (16:22 +0200)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 18 Sep 2014 22:20:03 +0000 (08:20 +1000)
For touchpads with top softbuttons we don't want to fully disable the touchpad
on suspend, as we want to keep the top softbuttons working for the trackpoint.

So in the suspended state some of the touchpad sub-statemachines will keep
running (e.g. buttons) where others (e.g. tap) will not. This means that
we will need to clear the touchpad state on resume too, to avoid things
being in an inconsistent state after resume.

This commit factors out the state clearing code into a helper functions, so
that the same code can be used on resume.

No functional changes.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
src/evdev-mt-touchpad.c

index bed62569517dab1db60aef63957c5e4264c4adc7..522f111392849eea8b5c05bca9403f6523690f22 100644 (file)
@@ -602,7 +602,7 @@ tp_destroy(struct evdev_dispatch *dispatch)
 }
 
 static void
-tp_suspend(struct tp_dispatch *tp, struct evdev_device *device)
+tp_clear_state(struct tp_dispatch *tp, struct evdev_device *device)
 {
        uint64_t now = libinput_now(tp->device->base.seat->libinput);
        struct tp_touch *t;
@@ -626,7 +626,12 @@ tp_suspend(struct tp_dispatch *tp, struct evdev_device *device)
        }
 
        tp_handle_state(tp, now);
+}
 
+static void
+tp_suspend(struct tp_dispatch *tp, struct evdev_device *device)
+{
+       tp_clear_state(tp, device);
        evdev_device_suspend(device);
 }