diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/QuadTree/LodRenderSection.java b/core/src/main/java/com/seibel/distanthorizons/core/render/QuadTree/LodRenderSection.java index 3367e1879..25bc7f570 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/QuadTree/LodRenderSection.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/QuadTree/LodRenderSection.java @@ -315,15 +315,17 @@ public class LodRenderSection implements IDebugRenderable, AutoCloseable CompletableFuture oldFuture = this.bufferUploadFutureRef.getAndSet(null); if (oldFuture != null) { - // shouldn't normally happen, but just in case canceling the previous future + // canceling the previous future // prevents the CPU from working on something that won't be used oldFuture.cancel(true); } CompletableFuture future = ColumnRenderBufferBuilder.uploadBuffersAsync(this.level, this.pos, lodQuadBuilder); - future.handle((a, throwable) -> + future.handle((lodBufferContainer, throwable) -> { - if (!this.bufferUploadFutureRef.compareAndSet(future, null)) + if (!this.bufferUploadFutureRef.compareAndSet(future, null) + // if the old future is canceled then the future ref will be different and that's expected + && !future.isCancelled()) { LOGGER.error("Buffer upload future ref changed for pos: ["+DhSectionPos.toString(this.pos)+"]."); }