diff --git a/src/models.zig b/src/models.zig index d0bdbce7..b722e8d6 100644 --- a/src/models.zig +++ b/src/models.zig @@ -553,6 +553,9 @@ pub fn init() void { } pub fn reset() void { + for(models.items) |model| { + model.deinit(); + } models.clearRetainingCapacity(); quads.clearRetainingCapacity(); extraQuadInfos.clearRetainingCapacity(); diff --git a/src/utils.zig b/src/utils.zig index 2684a83b..c911e6e8 100644 --- a/src/utils.zig +++ b/src/utils.zig @@ -538,7 +538,7 @@ pub fn BlockingMaxHeap(comptime T: type) type { // MARK: BlockingMaxHeap self.size += 1; } - self.waitingThreads.signal(); + self.waitingThreads.broadcast(); } fn removeIndex(self: *@This(), i: usize) void { @@ -758,6 +758,7 @@ pub const ThreadPool = struct { // MARK: ThreadPool for(self.loadList.array[0..self.loadList.size]) |task| { task.vtable.clean(task.self); } + _ = self.trueQueueSize.fetchSub(self.loadList.size, .monotonic); self.loadList.size = 0; self.loadList.mutex.unlock(); // Wait for the in-progress tasks to finish: