config: Hold input lock across udev socket handling

This avoids having the server running inside libudev from two threads
at once, which it appears to not like.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Keith Packard 2016-08-15 22:25:56 -07:00 committed by Peter Hutterer
parent de5291c04b
commit bf2ca502b9
1 changed files with 5 additions and 1 deletions

View File

@ -345,9 +345,12 @@ socket_handler(int fd, int ready, void *data)
struct udev_device *udev_device;
const char *action;
input_lock();
udev_device = udev_monitor_receive_device(udev_monitor);
if (!udev_device)
if (!udev_device) {
input_unlock();
return;
}
action = udev_device_get_action(udev_device);
if (action) {
if (!strcmp(action, "add")) {
@ -364,6 +367,7 @@ socket_handler(int fd, int ready, void *data)
device_removed(udev_device);
}
udev_device_unref(udev_device);
input_unlock();
}
int