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