diff --git a/src/seat.c b/src/seat.c index 481adf3a..082ed306 100644 --- a/src/seat.c +++ b/src/seat.c @@ -222,6 +222,17 @@ seat_update_capabilities(struct seat *seat) wlr_seat_set_capabilities(seat->seat, caps); } +static void +seat_add_device(struct seat *seat, struct input *input) +{ + input->seat = seat; + input->destroy.notify = input_device_destroy; + wl_signal_add(&input->wlr_input_device->events.destroy, &input->destroy); + wl_list_insert(&seat->inputs, &input->link); + + seat_update_capabilities(seat); +} + static void new_input_notify(struct wl_listener *listener, void *data) { @@ -229,7 +240,6 @@ new_input_notify(struct wl_listener *listener, void *data) struct wlr_input_device *device = data; struct input *input = znew(*input); input->wlr_input_device = device; - input->seat = seat; switch (device->type) { case WLR_INPUT_DEVICE_KEYBOARD: @@ -246,11 +256,7 @@ new_input_notify(struct wl_listener *listener, void *data) break; } - input->destroy.notify = input_device_destroy; - wl_signal_add(&device->events.destroy, &input->destroy); - wl_list_insert(&seat->inputs, &input->link); - - seat_update_capabilities(seat); + seat_add_device(seat, input); } static void