mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-05-08 08:58:04 +02:00
touchpad: remove the lid switch listener on device_removed
Sequence triggered by the xorg driver, but basically: if the touchpad is destroyed before the lid switch, the event listener wasn't removed and an assertion was triggered. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
87b04a0cb2
commit
9d1fdb0c6d
2 changed files with 32 additions and 0 deletions
|
|
@ -1768,6 +1768,12 @@ tp_interface_device_removed(struct evdev_device *device,
|
||||||
tp->dwt.keyboard = NULL;
|
tp->dwt.keyboard = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (removed_device == tp->lid_switch.lid_switch) {
|
||||||
|
libinput_device_remove_event_listener(
|
||||||
|
&tp->lid_switch.lid_switch_listener);
|
||||||
|
tp->lid_switch.lid_switch = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (tp->sendevents.current_mode !=
|
if (tp->sendevents.current_mode !=
|
||||||
LIBINPUT_CONFIG_SEND_EVENTS_DISABLED_ON_EXTERNAL_MOUSE)
|
LIBINPUT_CONFIG_SEND_EVENTS_DISABLED_ON_EXTERNAL_MOUSE)
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -407,6 +407,30 @@ START_TEST(lid_open_on_key_touchpad_enabled)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(lid_suspend_with_touchpad)
|
||||||
|
{
|
||||||
|
struct libinput *li;
|
||||||
|
struct litest_device *touchpad, *sw;
|
||||||
|
|
||||||
|
li = litest_create_context();
|
||||||
|
|
||||||
|
sw = litest_add_device(li, LITEST_LID_SWITCH);
|
||||||
|
litest_drain_events(li);
|
||||||
|
|
||||||
|
touchpad = litest_add_device(li, LITEST_SYNAPTICS_I2C);
|
||||||
|
litest_delete_device(touchpad);
|
||||||
|
touchpad = litest_add_device(li, LITEST_SYNAPTICS_I2C);
|
||||||
|
litest_drain_events(li);
|
||||||
|
|
||||||
|
litest_delete_device(sw);
|
||||||
|
litest_drain_events(li);
|
||||||
|
litest_delete_device(touchpad);
|
||||||
|
litest_drain_events(li);
|
||||||
|
|
||||||
|
libinput_unref(li);
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
START_TEST(lid_update_hw_on_key)
|
START_TEST(lid_update_hw_on_key)
|
||||||
{
|
{
|
||||||
struct litest_device *sw = litest_current_device();
|
struct litest_device *sw = litest_current_device();
|
||||||
|
|
@ -469,5 +493,7 @@ litest_setup_tests_lid(void)
|
||||||
litest_add("lid:keyboard", lid_open_on_key, LITEST_SWITCH, LITEST_ANY);
|
litest_add("lid:keyboard", lid_open_on_key, LITEST_SWITCH, LITEST_ANY);
|
||||||
litest_add("lid:keyboard", lid_open_on_key_touchpad_enabled, LITEST_SWITCH, LITEST_ANY);
|
litest_add("lid:keyboard", lid_open_on_key_touchpad_enabled, LITEST_SWITCH, LITEST_ANY);
|
||||||
|
|
||||||
|
litest_add_no_device("lid:disable_touchpad", lid_suspend_with_touchpad);
|
||||||
|
|
||||||
litest_add_for_device("lid:buggy", lid_update_hw_on_key, LITEST_LID_SWITCH_SURFACE3);
|
litest_add_for_device("lid:buggy", lid_update_hw_on_key, LITEST_LID_SWITCH_SURFACE3);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue