Revert "lid: force the lid to open when the keyboard device is removed"
authorPeter Hutterer <peter.hutterer@who-t.net>
Tue, 23 May 2017 03:06:44 +0000 (13:06 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Tue, 23 May 2017 05:10:10 +0000 (15:10 +1000)
This reverts commit 1e2b66fb9a0de8956abc7d996afdd24a11893eb6.

src/evdev-lid.c
test/test-lid.c

index 1edb12b0f684fd2243572f40f798314aaddce5f7..fe98e6e117ff9059bcebdbf7e0307c769e02d47c 100644 (file)
@@ -64,23 +64,6 @@ lid_switch_notify_toggle(struct lid_switch_dispatch *dispatch,
        }
 }
 
-static void
-lid_switch_update_kernel_state(struct lid_switch_dispatch *dispatch,
-                              uint64_t time)
-{
-       int fd;
-       const struct input_event ev[2] = {
-               {{ 0, 0 }, EV_SW, SW_LID, 0 },
-               {{ 0, 0 }, EV_SYN, SYN_REPORT, 0 },
-       };
-
-       if (dispatch->reliability != RELIABILITY_WRITE_OPEN)
-               return;
-
-       fd = libevdev_get_fd(dispatch->device->evdev);
-       (void)write(fd, ev, sizeof(ev));
-}
-
 static void
 lid_switch_keyboard_event(uint64_t time,
                          struct libinput_event *event,
@@ -94,7 +77,17 @@ lid_switch_keyboard_event(uint64_t time,
        if (event->type != LIBINPUT_EVENT_KEYBOARD_KEY)
                return;
 
-       lid_switch_update_kernel_state(dispatch, time);
+       if (dispatch->reliability == RELIABILITY_WRITE_OPEN) {
+               int fd = libevdev_get_fd(dispatch->device->evdev);
+               struct input_event ev[2] = {
+                       {{ 0, 0 }, EV_SW, SW_LID, 0 },
+                       {{ 0, 0 }, EV_SYN, SYN_REPORT, 0 },
+               };
+
+               (void)write(fd, ev, sizeof(ev));
+               /* In case write() fails, we sync the lid state manually
+                * regardless. */
+       }
 
        /* Posting the event here means we preempt the keyboard events that
         * caused us to wake up, so the lid event is always passed on before
@@ -253,16 +246,11 @@ lid_switch_interface_device_removed(struct evdev_device *device,
        struct lid_switch_dispatch *dispatch = lid_dispatch(device->dispatch);
 
        if (removed_device == dispatch->keyboard.keyboard) {
-               uint64_t time;
-
                libinput_device_remove_event_listener(
                                        &dispatch->keyboard.listener);
                libinput_device_init_event_listener(
                                        &dispatch->keyboard.listener);
                dispatch->keyboard.keyboard = NULL;
-
-               time = libinput_now(evdev_libinput_context(device));
-               lid_switch_update_kernel_state(dispatch, time);
        }
 }
 
index 2257976ec9f8ee29bc1d904ac75413518c9d1127..4bf4c05943d3bb9ea0be442a066c108804d8de8b 100644 (file)
@@ -555,41 +555,6 @@ START_TEST(lid_update_hw_on_key_closed_on_init)
 }
 END_TEST
 
-START_TEST(lid_force_open_if_no_keyboard)
-{
-       struct litest_device *sw = litest_current_device();
-       struct libinput *li;
-       struct litest_device *keyboard;
-
-       litest_lid_action(sw, LIBINPUT_SWITCH_STATE_ON);
-       keyboard = litest_add_device(sw->libinput, LITEST_KEYBOARD);
-
-       /* separate context for the right state on init */
-       li = litest_create_context();
-       libinput_path_add_device(li,
-                                libevdev_uinput_get_devnode(sw->uinput));
-
-       /* We only have the switch device in this context, not the keyboard.
-        * So don't expect any switch event to be in the pipe and don't
-        * expect the event to change if we type or toggle the state
-        */
-       while (libinput_next_event_type(li) != LIBINPUT_EVENT_NONE) {
-               ck_assert_int_ne(libinput_next_event_type(li),
-                                LIBINPUT_EVENT_SWITCH_TOGGLE);
-               libinput_event_destroy(libinput_get_event(li));
-       }
-
-       litest_event(keyboard, EV_KEY, KEY_A, 1);
-       litest_event(keyboard, EV_SYN, SYN_REPORT, 0);
-       litest_event(keyboard, EV_KEY, KEY_A, 0);
-       litest_event(keyboard, EV_SYN, SYN_REPORT, 0);
-       litest_lid_action(sw, LIBINPUT_SWITCH_STATE_OFF);
-       litest_assert_empty_queue(li);
-
-       libinput_unref(li);
-       litest_delete_device(keyboard);
-}
-END_TEST
 void
 litest_setup_tests_lid(void)
 {
@@ -611,5 +576,4 @@ litest_setup_tests_lid(void)
 
        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_closed_on_init, LITEST_LID_SWITCH_SURFACE3);
-       litest_add_for_device("lid:buggy", lid_force_open_if_no_keyboard, LITEST_LID_SWITCH_SURFACE3);
 }