From e48f0d2fdb7f74f16c7f4415bd9edbaea0ab1d64 Mon Sep 17 00:00:00 2001 From: IntegratedQuantum Date: Mon, 24 Jun 2024 22:22:05 +0200 Subject: [PATCH] Fix crash when deleting world in the world selection screen. fixes #486 --- src/gui/windows/save_selection.zig | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/gui/windows/save_selection.zig b/src/gui/windows/save_selection.zig index 19d4364f..910fb4bc 100644 --- a/src/gui/windows/save_selection.zig +++ b/src/gui/windows/save_selection.zig @@ -23,6 +23,8 @@ const padding: f32 = 8; const width: f32 = 128; var buttonNameArena: main.utils.NeverFailingArenaAllocator = undefined; +var needsUpdate: bool = false; + pub fn openWorld(name: []const u8) void { std.log.info("Opening world {s}", .{name}); main.server.thread = std.Thread.spawn(.{}, main.server.start, .{name}) catch |err| { @@ -53,8 +55,7 @@ fn openWorldWrap(namePtr: usize) void { // TODO: Improve this situation. Maybe i fn flawedDeleteWorld(name: []const u8) !void { try main.files.deleteDir("saves", name); - onClose(); - onOpen(); + needsUpdate = true; } fn deleteWorld(namePtr: usize) void { @@ -92,6 +93,14 @@ fn parseEscapedFolderName(allocator: NeverFailingAllocator, name: []const u8) [] return result.toOwnedSlice(); } +pub fn update() void { + if(needsUpdate) { + needsUpdate = false; + onClose(); + onOpen(); + } +} + pub fn onOpen() void { buttonNameArena = main.utils.NeverFailingArenaAllocator.init(main.globalAllocator); const list = VerticalList.init(.{padding, 16 + padding}, 300, 8);