From a9ac482647678fc77d17fd57b4255b2d376e25cd Mon Sep 17 00:00:00 2001 From: Andrew de los Reyes Date: Sun, 20 Apr 2025 09:44:39 -0700 Subject: [PATCH] Free up cells memory on resize --- src/renderer/OpenGL.zig | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/renderer/OpenGL.zig b/src/renderer/OpenGL.zig index 255097655..364cb9fba 100644 --- a/src/renderer/OpenGL.zig +++ b/src/renderer/OpenGL.zig @@ -1784,6 +1784,15 @@ pub fn rebuildCells( } } + // Free up memory, generally in case where surface has shrunk. + // If more than half of the capacity is unused, remove all unused capacity. + if (self.cells.items.len * 2 < self.cells.capacity) { + self.cells.shrinkAndFree(self.alloc, self.cells.items.len); + } + if (self.cells_bg.items.len * 2 < self.cells_bg.capacity) { + self.cells_bg.shrinkAndFree(self.alloc, self.cells_bg.items.len); + } + // Some debug mode safety checks if (std.debug.runtime_safety) { for (self.cells_bg.items) |cell| assert(cell.mode == .bg);