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:
parent
de5291c04b
commit
bf2ca502b9
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue