remove all keyboard listeners on destroy

This commit is contained in:
Squibid 2025-10-26 22:09:01 -04:00
parent 13a91c15f0
commit cb947c15e3

View file

@ -17,8 +17,6 @@ wlr_keyboard: *wlr.Keyboard,
context: *xkb.Context, context: *xkb.Context,
device: *wlr.InputDevice, device: *wlr.InputDevice,
link: wl.list.Link = undefined,
// Keyboard listeners // Keyboard listeners
key: wl.Listener(*wlr.Keyboard.event.Key) = .init(handleKey), key: wl.Listener(*wlr.Keyboard.event.Key) = .init(handleKey),
key_map: wl.Listener(*wlr.Keyboard) = .init(handleKeyMap), key_map: wl.Listener(*wlr.Keyboard) = .init(handleKeyMap),
@ -106,10 +104,9 @@ pub fn handleDestroy(listener: *wl.Listener(*wlr.InputDevice), _: *wlr.InputDevi
std.log.debug("removing keyboard: {s}", .{keyboard.device.name orelse "(null)"}); std.log.debug("removing keyboard: {s}", .{keyboard.device.name orelse "(null)"});
keyboard.link.remove();
keyboard.modifiers.link.remove(); keyboard.modifiers.link.remove();
keyboard.key.link.remove(); keyboard.key.link.remove();
keyboard.key_map.link.remove();
keyboard.destroy.link.remove(); keyboard.destroy.link.remove();
gpa.destroy(keyboard); gpa.destroy(keyboard);