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;
|
struct udev_device *udev_device;
|
||||||
const char *action;
|
const char *action;
|
||||||
|
|
||||||
|
input_lock();
|
||||||
udev_device = udev_monitor_receive_device(udev_monitor);
|
udev_device = udev_monitor_receive_device(udev_monitor);
|
||||||
if (!udev_device)
|
if (!udev_device) {
|
||||||
|
input_unlock();
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
action = udev_device_get_action(udev_device);
|
action = udev_device_get_action(udev_device);
|
||||||
if (action) {
|
if (action) {
|
||||||
if (!strcmp(action, "add")) {
|
if (!strcmp(action, "add")) {
|
||||||
|
@ -364,6 +367,7 @@ socket_handler(int fd, int ready, void *data)
|
||||||
device_removed(udev_device);
|
device_removed(udev_device);
|
||||||
}
|
}
|
||||||
udev_device_unref(udev_device);
|
udev_device_unref(udev_device);
|
||||||
|
input_unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
Loading…
Reference in New Issue
Block a user