Closing windows is no longer a segfault

This commit is contained in:
Ben Buhse 2025-08-05 18:57:16 -05:00
commit 8304734230
No known key found for this signature in database
GPG key ID: 7916ACFCD38FD0B4
3 changed files with 27 additions and 5 deletions

View file

@ -5,5 +5,5 @@
echo ">>>>> before foot"
/usr/bin/foot &
# /usr/bin/foot &
/usr/bin/foot &
echo "<<<<< after foot"

View file

@ -35,6 +35,15 @@ fn windowListener(river_window_v1: *river.WindowV1, event: river.WindowV1.Event,
switch (event) {
.closed => {
river_window_v1.destroy();
{
var it = window.context.wm.seats.iterator(.forward);
while (it.next()) |seat| {
if (seat.hovered == window) {
seat.hovered = null;
}
}
}
window.link.remove();
window.context.allocator.destroy(window);
},
.dimensions => |ev| {

View file

@ -59,10 +59,23 @@ fn windowManagerV1Listener(window_manager_v1: *river.WindowManagerV1, event: riv
window_manager_v1.manageFinish();
},
.render_start => {
log.debug("2", .{});
var it = wm.windows.iterator(.forward);
while (it.next()) |window| {
window.render();
{
var it = wm.seats.iterator(.forward);
while (it.next()) |seat| {
seat.render();
}
}
{
var it = wm.outputs.iterator(.forward);
while (it.next()) |output| {
output.render();
}
}
{
var it = wm.windows.iterator(.forward);
while (it.next()) |window| {
window.render();
}
}
window_manager_v1.renderFinish();
},