diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/ParticleRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/ParticleRenderer.kt index d70945173..bc27c4d52 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/ParticleRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/ParticleRenderer.kt @@ -162,10 +162,13 @@ class ParticleRenderer( translucentMesh = ParticleMesh(renderWindow, translucentMesh.data) - particlesLock.acquire() + particlesLock.lock() particleQueueLock.acquire() particles += particleQueue particleQueueLock.release() + particlesLock.unlock() + + particlesLock.acquire() val time = KUtil.time for (particle in particles) { diff --git a/src/main/java/de/bixilon/minosoft/util/task/time/TimeWorker.kt b/src/main/java/de/bixilon/minosoft/util/task/time/TimeWorker.kt index 54b2b0ff3..2f5167a23 100644 --- a/src/main/java/de/bixilon/minosoft/util/task/time/TimeWorker.kt +++ b/src/main/java/de/bixilon/minosoft/util/task/time/TimeWorker.kt @@ -14,7 +14,7 @@ object TimeWorker { while (true) { val currentTime = KUtil.time for (task in TASKS.toSynchronizedSet()) { - if (task.getsExecuted) { + if (task.executing) { continue } if (currentTime - task.lastExecution <= task.interval) { @@ -24,7 +24,7 @@ object TimeWorker { if (!task.lock.tryLock(100L, TimeUnit.MILLISECONDS)) { return@execute } - if (task.getsExecuted) { + if (task.executing) { task.lock.unlock() return@execute } @@ -32,10 +32,14 @@ object TimeWorker { task.lock.unlock() return@execute } - task.getsExecuted = true - task.runnable.run() + task.executing = true + try { + task.runnable.run() + } catch (exception: Exception) { + exception.printStackTrace() + } task.lastExecution = currentTime - task.getsExecuted = false + task.executing = false task.lock.unlock() } if (task.runOnce) { diff --git a/src/main/java/de/bixilon/minosoft/util/task/time/TimeWorkerTask.kt b/src/main/java/de/bixilon/minosoft/util/task/time/TimeWorkerTask.kt index cdbc08326..309dbabbd 100644 --- a/src/main/java/de/bixilon/minosoft/util/task/time/TimeWorkerTask.kt +++ b/src/main/java/de/bixilon/minosoft/util/task/time/TimeWorkerTask.kt @@ -22,6 +22,6 @@ data class TimeWorkerTask( val runnable: Runnable, ) { val lock = ReentrantLock() - var getsExecuted: Boolean = false + var executing: Boolean = false var lastExecution: Long = 0L }