diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/WorldRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/WorldRenderer.kt index bfe7edd60..177fb9008 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/WorldRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/WorldRenderer.kt @@ -227,7 +227,7 @@ class WorldRenderer( culledQueue.remove(item.chunkPosition, item.sectionHeight, false) - meshingQueue.remove(item) + meshingQueue.remove(item, false) loadingQueue.abort(item.chunkPosition, false) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/queue/CulledQueue.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/queue/CulledQueue.kt index 62fa245e1..75f234dd4 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/queue/CulledQueue.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/queue/CulledQueue.kt @@ -55,7 +55,6 @@ class CulledQueue( if (lock) this.lock.lock() this.queue.clear() if (lock) this.lock.unlock() - } fun remove(position: ChunkPosition, lock: Boolean) { @@ -108,9 +107,10 @@ class CulledQueue( queueIterator.remove() } } + world.chunks.lock.release() + lock.release() - world.chunks.lock.acquire() return list } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/queue/meshing/ChunkMeshingQueue.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/queue/meshing/ChunkMeshingQueue.kt index f1c46f24e..6ea2d7ea9 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/queue/meshing/ChunkMeshingQueue.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/queue/meshing/ChunkMeshingQueue.kt @@ -129,12 +129,12 @@ class ChunkMeshingQueue( } - fun remove(item: WorldQueueItem) { - this.lock.lock() + fun remove(item: WorldQueueItem, lock: Boolean) { + if (lock) this.lock.lock() if (this.set.remove(item)) { this.queue -= item } - this.lock.unlock() + if (lock) this.lock.unlock() }