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.
This commit is contained in:
Isaac Freund 2022-01-02 19:46:18 +00:00
parent e16eabd928
commit 1c515759b4
No known key found for this signature in database
GPG Key ID: 86DED400DDFD7A11

View File

@ -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.