mirror of
https://github.com/gnif/LookingGlass.git
synced 2026-08-22 07:01:30 +00:00
evdev_stop was never called, and calling it revealed unsafe teardown: the device list was freed before the thread was joined, a zero epoll descriptor was mistaken for a valid one, and the device loops walked past the end of the array through a sentinel that does not exist. Join the thread in evdev_stop and defer the rest to the new evdev_free. The display server grab hooks route into evdev until its event thread is joined, so the device state must stay valid until the display server has been freed; evdev_free then restores the hooks and releases the state.
1.4 KiB
1.4 KiB