mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-16 19:05:02 -04:00
world renderer: fix some locking crashes
This commit is contained in:
parent
b8ef770685
commit
6a5e9ab799
@ -88,14 +88,17 @@ class LoadedMeshes(
|
|||||||
|
|
||||||
|
|
||||||
operator fun contains(position: ChunkPosition): Boolean {
|
operator fun contains(position: ChunkPosition): Boolean {
|
||||||
|
renderer.lock.acquire()
|
||||||
lock.acquire()
|
lock.acquire()
|
||||||
val contains = position in this.meshes
|
val contains = position in this.meshes
|
||||||
lock.release()
|
lock.release()
|
||||||
|
renderer.lock.release()
|
||||||
return contains
|
return contains
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun collect(visible: VisibleMeshes) {
|
fun collect(visible: VisibleMeshes) {
|
||||||
|
renderer.lock.acquire()
|
||||||
lock.acquire()
|
lock.acquire()
|
||||||
for ((chunkPosition, meshes) in this.meshes) {
|
for ((chunkPosition, meshes) in this.meshes) {
|
||||||
if (!renderer.visibilityGraph.isChunkVisible(chunkPosition)) {
|
if (!renderer.visibilityGraph.isChunkVisible(chunkPosition)) {
|
||||||
@ -111,6 +114,7 @@ class LoadedMeshes(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
lock.release()
|
lock.release()
|
||||||
|
renderer.lock.release()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun lock() {
|
fun lock() {
|
||||||
|
@ -81,6 +81,7 @@ class CulledQueue(
|
|||||||
|
|
||||||
|
|
||||||
fun collect(): MutableList<Pair<Chunk, Int>> {
|
fun collect(): MutableList<Pair<Chunk, Int>> {
|
||||||
|
renderer.lock.acquire()
|
||||||
lock.acquire() // The queue method needs the full lock of the culledQueue
|
lock.acquire() // The queue method needs the full lock of the culledQueue
|
||||||
|
|
||||||
val world = renderer.world
|
val world = renderer.world
|
||||||
@ -112,6 +113,7 @@ class CulledQueue(
|
|||||||
world.chunks.lock.release()
|
world.chunks.lock.release()
|
||||||
|
|
||||||
lock.release()
|
lock.release()
|
||||||
|
renderer.lock.release()
|
||||||
|
|
||||||
|
|
||||||
return list
|
return list
|
||||||
|
@ -144,6 +144,7 @@ class ChunkMeshingQueue(
|
|||||||
|
|
||||||
fun queue(item: WorldQueueItem) {
|
fun queue(item: WorldQueueItem) {
|
||||||
lock()
|
lock()
|
||||||
|
// TODO: don't remove and readd
|
||||||
if (set.remove(item)) {
|
if (set.remove(item)) {
|
||||||
queue -= item
|
queue -= item
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user