From 1c515759b4b6c3d8e5acbed157480dab7da00383 Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Sun, 2 Jan 2022 19:46:18 +0000 Subject: Seat: do a better job of cleaning up listeners I thought this should be fine as river won't yield to the event loop when Seat.deinit() is called before the wlroots seat is destroyed, but a segfault on exit has been reported with a stack trace mentioning wlr_seat_destroy(). Let's hope this clears that up. --- river/Seat.zig | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/river/Seat.zig b/river/Seat.zig index b029c72..a81f002 100644 --- a/river/Seat.zig +++ b/river/Seat.zig @@ -128,6 +128,12 @@ pub fn deinit(self: *Self) void { self.focus_stack.remove(node); util.gpa.destroy(node); } + + self.request_set_selection.link.remove(); + self.request_start_drag.link.remove(); + self.start_drag.link.remove(); + if (self.pointer_drag) self.pointer_drag_destroy.link.remove(); + self.request_set_primary_selection.link.remove(); } /// Set the current focus. If a visible view is passed it will be focused. -- cgit v1.2.3