mirror of
https://github.com/cage-kiosk/cage.git
synced 2025-10-29 05:40:19 -04:00
seat: destroy keyboard groups on shutdown
These are not destroyed automatically because they are entirely managed by the compositor.
This commit is contained in:
parent
6b1ba34a4a
commit
e21c155bcd
1 changed files with 15 additions and 0 deletions
15
seat.c
15
seat.c
|
|
@ -380,6 +380,16 @@ cleanup:
|
|||
free(cg_group);
|
||||
}
|
||||
|
||||
static void
|
||||
keyboard_group_destroy(struct cg_keyboard_group *keyboard_group)
|
||||
{
|
||||
wl_list_remove(&keyboard_group->key.link);
|
||||
wl_list_remove(&keyboard_group->modifiers.link);
|
||||
wlr_keyboard_group_destroy(keyboard_group->wlr_group);
|
||||
wl_list_remove(&keyboard_group->link);
|
||||
free(keyboard_group);
|
||||
}
|
||||
|
||||
static void
|
||||
handle_new_keyboard(struct cg_seat *seat, struct wlr_keyboard *keyboard, bool virtual)
|
||||
{
|
||||
|
|
@ -893,6 +903,11 @@ seat_destroy(struct cg_seat *seat)
|
|||
wl_list_remove(&seat->request_start_drag.link);
|
||||
wl_list_remove(&seat->start_drag.link);
|
||||
|
||||
struct cg_keyboard_group *keyboard_group, *keyboard_group_tmp;
|
||||
wl_list_for_each_safe (keyboard_group, keyboard_group_tmp, &seat->keyboard_groups, link) {
|
||||
keyboard_group_destroy(keyboard_group);
|
||||
}
|
||||
|
||||
// Destroying the wlr seat will trigger the destroy handler on our seat,
|
||||
// which will in turn free it.
|
||||
wlr_seat_destroy(seat->seat);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue