diff options
Diffstat (limited to 'src/main.zig')
| -rw-r--r-- | src/main.zig | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/main.zig b/src/main.zig index eb7aef2..96b87eb 100644 --- a/src/main.zig +++ b/src/main.zig @@ -20,9 +20,10 @@ pub fn main() !void { defer progress.end(); var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); + const cfg_allocator = arena.allocator(); defer arena.deinit(); - var config = try cfg.Config.init(arena.allocator()); + var config = try cfg.Config.init(cfg_allocator); _ = c.glfwSetErrorCallback(errorCallback); @@ -60,13 +61,13 @@ pub fn main() !void { var constants = try gl.Constants.create(window, &config); defer constants.destroy(); - var outputs = try std.ArrayList(*out.Output).initCapacity(arena.allocator(), config.outputs.len); + var outputs = try std.ArrayList(*out.Output).initCapacity(cfg_allocator, config.outputs.len); defer outputs.deinit(); for (config.outputs) |*output_config| { - try outputs.append(out.Output.create(arena.allocator(), output_config, &constants)); + outputs.appendAssumeCapacity(try out.Output.create(cfg_allocator, output_config, &constants)); } defer for (outputs.items) |output| { - output.destroy(arena.allocator()); + output.destroy(cfg_allocator); }; c.glfwMakeContextCurrent(window); @@ -113,7 +114,7 @@ pub fn main() !void { var cache = gl.UniformCache.init(std.heap.c_allocator, &main_program); defer cache.deinit(); - const control = try ctrl.ControlServer.init(arena.allocator(), progress, &config, &cache); + const control = try ctrl.ControlServer.init(cfg_allocator, progress, &config, &cache); defer control.destroy(); while (c.glfwWindowShouldClose(window) == c.GL_FALSE) { @@ -124,6 +125,7 @@ pub fn main() !void { prev_time = now_time; control.update(); + cache.update(); // const stat = try shader_file.stat(); // if (stat.mtime > last_stat.mtime or control.reload_requested) { @@ -145,7 +147,7 @@ pub fn main() !void { const close = output.update(fbo.texture_id); if (close) { const removed = outputs.swapRemove(i); - removed.destroy(arena.allocator()); + removed.destroy(cfg_allocator); break; } } |
