diff --git a/src/input.c b/src/input.c index 4f6ba7b3..272fec0d 100644 --- a/src/input.c +++ b/src/input.c @@ -45,7 +45,7 @@ static void unbind_resource(struct wl_resource *resource) wl_list_remove(wl_resource_get_link(resource)); } -void +WL_EXPORT void weston_seat_repick(struct weston_seat *seat) { const struct weston_pointer *pointer = seat->pointer; diff --git a/src/udev-seat.c b/src/udev-seat.c index 4ef7ff33..ffaf08aa 100644 --- a/src/udev-seat.c +++ b/src/udev-seat.c @@ -128,6 +128,9 @@ device_added(struct udev_device *udev_device, struct udev_input *input) device->output = output; } + if (input->enabled == 1) + weston_seat_repick(&seat->base); + return 0; } @@ -263,6 +266,8 @@ udev_input_enable(struct udev_input *input, struct udev *udev) if (udev_input_add_devices(input, udev) < 0) return -1; + input->enabled = 1; + return 0; } diff --git a/src/udev-seat.h b/src/udev-seat.h index 5bf7caad..4cb6f071 100644 --- a/src/udev-seat.h +++ b/src/udev-seat.h @@ -39,6 +39,7 @@ struct udev_input { struct wl_event_source *udev_monitor_source; char *seat_id; struct weston_compositor *compositor; + int enabled; };