Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git
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.