This avoids having the server running inside libudev from two threads at once, which it appears to not like.
Signed-off-by: Keith Packard <[email protected]> --- config/udev.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/config/udev.c b/config/udev.c index 23b795f..932f230 100644 --- a/config/udev.c +++ b/config/udev.c @@ -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 -- 2.8.1 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
