mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-16 10:55:01 -04:00
use UnconditionalWorker whenever possible
This commit is contained in:
parent
3245ce71ae
commit
7ce26ba406
@ -17,9 +17,12 @@ import de.bixilon.kutil.collections.CollectionUtil.lockMapOf
|
||||
import de.bixilon.kutil.collections.CollectionUtil.synchronizedListOf
|
||||
import de.bixilon.kutil.collections.map.LockMap
|
||||
import de.bixilon.kutil.concurrent.pool.DefaultThreadPool
|
||||
import de.bixilon.kutil.concurrent.pool.ThreadPool
|
||||
import de.bixilon.kutil.concurrent.worker.unconditional.UnconditionalTask
|
||||
import de.bixilon.kutil.concurrent.worker.unconditional.UnconditionalWorker
|
||||
import de.bixilon.kutil.latch.CountUpAndDownLatch
|
||||
import de.bixilon.kutil.observer.DataObserver.Companion.observe
|
||||
import de.bixilon.kutil.time.TimeUtil
|
||||
import de.bixilon.kutil.time.TimeUtil.millis
|
||||
import de.bixilon.minosoft.config.key.KeyActions
|
||||
import de.bixilon.minosoft.config.key.KeyBinding
|
||||
import de.bixilon.minosoft.config.key.KeyCodes
|
||||
@ -100,7 +103,7 @@ class EntityRenderer(
|
||||
override fun prePrepareDraw() {
|
||||
val count = AtomicInteger()
|
||||
runAsync {
|
||||
it.entity.draw(TimeUtil.millis)
|
||||
it.entity.draw(millis())
|
||||
it.update = it.checkUpdate()
|
||||
it.prepareAsync()
|
||||
if (it.visible) {
|
||||
@ -136,17 +139,15 @@ class EntityRenderer(
|
||||
}
|
||||
|
||||
private fun runAsync(executor: ((EntityModel<*>) -> Unit)) {
|
||||
val latch = CountUpAndDownLatch(0)
|
||||
val worker = UnconditionalWorker()
|
||||
models.lock.acquire()
|
||||
for (model in models.unsafe.values) {
|
||||
latch.inc()
|
||||
DefaultThreadPool += {
|
||||
worker += UnconditionalTask(ThreadPool.Priorities.HIGH) {
|
||||
executor(model)
|
||||
latch.dec()
|
||||
}
|
||||
}
|
||||
models.lock.release()
|
||||
latch.await()
|
||||
worker.work()
|
||||
}
|
||||
|
||||
|
||||
|
@ -14,10 +14,9 @@
|
||||
package de.bixilon.minosoft.gui.rendering.world.mesh
|
||||
|
||||
import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.kutil.concurrent.pool.DefaultThreadPool
|
||||
import de.bixilon.kutil.concurrent.pool.ThreadPool
|
||||
import de.bixilon.kutil.concurrent.pool.ThreadPoolRunnable
|
||||
import de.bixilon.kutil.latch.CountUpAndDownLatch
|
||||
import de.bixilon.kutil.concurrent.worker.unconditional.UnconditionalTask
|
||||
import de.bixilon.kutil.concurrent.worker.unconditional.UnconditionalWorker
|
||||
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY
|
||||
import de.bixilon.minosoft.gui.rendering.world.entities.BlockEntityRenderer
|
||||
import de.bixilon.minosoft.util.KUtil.format
|
||||
@ -58,12 +57,12 @@ class VisibleMeshes(val cameraPosition: Vec3 = Vec3.EMPTY, previous: VisibleMesh
|
||||
|
||||
|
||||
fun sort() {
|
||||
val latch = CountUpAndDownLatch(4)
|
||||
DefaultThreadPool += ThreadPoolRunnable(priority = ThreadPool.Priorities.HIGHER) { opaque.sortBy { it.distance };latch.dec() }
|
||||
DefaultThreadPool += ThreadPoolRunnable(priority = ThreadPool.Priorities.HIGHER) { translucent.sortBy { -it.distance };latch.dec() }
|
||||
DefaultThreadPool += ThreadPoolRunnable(priority = ThreadPool.Priorities.HIGHER) { transparent.sortBy { it.distance };latch.dec() }
|
||||
DefaultThreadPool += ThreadPoolRunnable(priority = ThreadPool.Priorities.HIGHER) { text.sortBy { it.distance };latch.dec() }
|
||||
latch.await()
|
||||
val worker = UnconditionalWorker()
|
||||
worker += UnconditionalTask(ThreadPool.Priorities.HIGHER) { opaque.sortBy { it.distance } }
|
||||
worker += UnconditionalTask(ThreadPool.Priorities.HIGHER) { translucent.sortBy { -it.distance } }
|
||||
worker += UnconditionalTask(ThreadPool.Priorities.HIGHER) { transparent.sortBy { it.distance } }
|
||||
worker += UnconditionalTask(ThreadPool.Priorities.HIGHER) { text.sortBy { it.distance } }
|
||||
worker.work()
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user