From ba498b35b979e095e43f025a37975d4cf2f70191 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Sat, 18 Dec 2021 14:57:45 +0100 Subject: [PATCH] assets verify: fix infinite waiting --- .../minosoft/assets/minecraft/index/IndexAssetsManager.kt | 6 ++++-- .../java/de/bixilon/minosoft/util/CountUpAndDownLatch.kt | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/assets/minecraft/index/IndexAssetsManager.kt b/src/main/java/de/bixilon/minosoft/assets/minecraft/index/IndexAssetsManager.kt index 3f97628c1..70cd4af88 100644 --- a/src/main/java/de/bixilon/minosoft/assets/minecraft/index/IndexAssetsManager.kt +++ b/src/main/java/de/bixilon/minosoft/assets/minecraft/index/IndexAssetsManager.kt @@ -113,8 +113,10 @@ class IndexAssetsManager( val size = data["size"]?.toLong() ?: -1 val hash = data["hash"].toString() - if (tasks.count > DefaultThreadPool.threadCount - 1) { - tasks.waitForChange() + synchronized(tasks.lock) { + if (tasks.count > DefaultThreadPool.threadCount - 1) { + tasks.waitForChange() + } } tasks.inc() DefaultThreadPool += ThreadPoolRunnable(priority = ThreadPool.LOW) { diff --git a/src/main/java/de/bixilon/minosoft/util/CountUpAndDownLatch.kt b/src/main/java/de/bixilon/minosoft/util/CountUpAndDownLatch.kt index a110d829e..75e21cc1e 100644 --- a/src/main/java/de/bixilon/minosoft/util/CountUpAndDownLatch.kt +++ b/src/main/java/de/bixilon/minosoft/util/CountUpAndDownLatch.kt @@ -18,7 +18,7 @@ import de.bixilon.minosoft.util.KUtil.toSynchronizedList class CountUpAndDownLatch @JvmOverloads constructor(count: Int, var parent: CountUpAndDownLatch? = null) { private val changeCallbacks: MutableSet<() -> Unit> = mutableSetOf() - private val lock = Object() + val lock = Object() private val children: MutableSet = synchronizedSetOf() private var rawCount = 0 set(value) {