From 9754943752524a65ec666bda5e8afc0df0752145 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Mon, 1 Jun 2026 21:44:59 -0500 Subject: [PATCH] Reduce rare generic object VBO upload race condition --- .../core/render/renderer/RenderableBoxGroup.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/RenderableBoxGroup.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/RenderableBoxGroup.java index cfbda75cf..bb06b2f37 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/RenderableBoxGroup.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/RenderableBoxGroup.java @@ -205,21 +205,20 @@ public class RenderableBoxGroup this.vertexBufferContainer = this.altVertexBufferContainer; this.altVertexBufferContainer = temp; - this.vertexDataDirty = false; - return; } - // if the vertex data is already up to date, do nothing - if (!this.vertexDataDirty) + // executor should always be available, if not that probably means the level is being shut down + PriorityTaskPicker.Executor executor = ThreadPoolUtil.getRenderLoadingExecutor(); + if (executor == null || executor.isTerminated()) { return; } - PriorityTaskPicker.Executor executor = ThreadPoolUtil.getRenderLoadingExecutor(); - if (executor == null || executor.isTerminated()) + // if the vertex data is already up to date, do nothing + if (!this.vertexDataDirty) { return; } @@ -250,6 +249,9 @@ public class RenderableBoxGroup { this.altVertexBufferContainer.updateVertexData(this.uploadBoxList); this.altVertexBufferContainer.setState(IDhGenericObjectVertexBufferContainer.EState.READY_TO_UPLOAD); + + // upload complete + this.vertexDataDirty = false; } catch (Exception e) {