From 8dbe4f9d1eac914f07cb3c0d28742c76f037a307 Mon Sep 17 00:00:00 2001 From: comp500 Date: Mon, 10 Jul 2023 22:44:53 +0100 Subject: [PATCH] Fix ClientWorld memory leak in non-terrain light cache (fixes #209) --- .../indium/renderer/render/NonTerrainBlockRenderContext.java | 1 + .../indium/renderer/render/SingleBlockLightDataCache.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/main/java/link/infra/indium/renderer/render/NonTerrainBlockRenderContext.java b/src/main/java/link/infra/indium/renderer/render/NonTerrainBlockRenderContext.java index e3dd510..c263d86 100644 --- a/src/main/java/link/infra/indium/renderer/render/NonTerrainBlockRenderContext.java +++ b/src/main/java/link/infra/indium/renderer/render/NonTerrainBlockRenderContext.java @@ -61,6 +61,7 @@ public void render(BlockRenderView blockView, BakedModel model, BlockState state // blockInfo is thread-local, not cleaned up when leaving world (and could be called for arbitrary BlockRenderViews) blockInfo.release(); + lightCache.release(); blockInfo.random = null; this.vertexConsumer = null; } diff --git a/src/main/java/link/infra/indium/renderer/render/SingleBlockLightDataCache.java b/src/main/java/link/infra/indium/renderer/render/SingleBlockLightDataCache.java index 2d8d3fd..fc5b6c8 100644 --- a/src/main/java/link/infra/indium/renderer/render/SingleBlockLightDataCache.java +++ b/src/main/java/link/infra/indium/renderer/render/SingleBlockLightDataCache.java @@ -53,4 +53,8 @@ public long get(int x, int y, int z) { return this.light[l] = this.compute(x, y, z); } + + public void release() { + this.world = null; + } }