factor keyboard/cursor cleanup into own functions

This commit is contained in:
bi4k8 2021-12-31 23:30:25 +00:00 committed by Johan Malm
parent 0f9374c701
commit 58f5e8d16a
4 changed files with 28 additions and 12 deletions

View file

@ -456,8 +456,10 @@ void cursor_set(struct seat *seat, const char *cursor_name);
void cursor_update_focus(struct server *server);
void cursor_init(struct seat *seat);
void cursor_finish(struct seat *seat);
void keyboard_init(struct seat *seat);
void keyboard_finish(struct seat *seat);
void arrange_layers(struct output *output);

View file

@ -716,3 +716,17 @@ cursor_init(struct seat *seat)
wl_signal_add(&seat->seat->events.request_set_primary_selection,
&seat->request_set_primary_selection);
}
void cursor_finish(struct seat *seat) {
wl_list_remove(&seat->cursor_motion.link);
wl_list_remove(&seat->cursor_motion_absolute.link);
wl_list_remove(&seat->cursor_button.link);
wl_list_remove(&seat->cursor_axis.link);
wl_list_remove(&seat->cursor_frame.link);
wl_list_remove(&seat->request_cursor.link);
wl_list_remove(&seat->request_set_selection.link);
wlr_xcursor_manager_destroy(seat->xcursor_manager);
wlr_cursor_destroy(seat->cursor);
}

View file

@ -218,3 +218,13 @@ keyboard_init(struct seat *seat)
seat->keyboard_modifiers.notify = keyboard_modifiers_notify;
wl_signal_add(&kb->events.modifiers, &seat->keyboard_modifiers);
}
void
keyboard_finish(struct seat *seat)
{
if (seat->keyboard_group) {
wlr_keyboard_group_destroy(seat->keyboard_group);
}
wl_list_remove(&seat->keyboard_key.link);
wl_list_remove(&seat->keyboard_modifiers.link);
}

View file

@ -243,19 +243,9 @@ void
seat_finish(struct server *server)
{
struct seat *seat = &server->seat;
wl_list_remove(&seat->cursor_motion.link);
wl_list_remove(&seat->cursor_motion_absolute.link);
wl_list_remove(&seat->cursor_button.link);
wl_list_remove(&seat->cursor_axis.link);
wl_list_remove(&seat->cursor_frame.link);
wl_list_remove(&seat->request_cursor.link);
wl_list_remove(&seat->request_set_selection.link);
wl_list_remove(&seat->new_input.link);
if (seat->keyboard_group) {
wlr_keyboard_group_destroy(seat->keyboard_group);
}
wlr_xcursor_manager_destroy(seat->xcursor_manager);
wlr_cursor_destroy(seat->cursor);
keyboard_finish(seat);
cursor_finish(seat);
}
void