diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt index fececd9f0..5c9826952 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt @@ -14,6 +14,9 @@ package de.bixilon.minosoft.gui.rendering import de.bixilon.kotlinglm.vec2.Vec2i +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.concurrent.queue.Queue import de.bixilon.kutil.latch.CountUpAndDownLatch import de.bixilon.kutil.math.simple.DoubleMath.rounded10 @@ -21,6 +24,7 @@ import de.bixilon.kutil.observer.DataObserver.Companion.observe import de.bixilon.kutil.observer.DataObserver.Companion.observed import de.bixilon.kutil.primitive.BooleanUtil.decide import de.bixilon.kutil.time.TimeUtil.millis +import de.bixilon.minosoft.gui.eros.crash.ErosCrashReport.Companion.crash import de.bixilon.minosoft.gui.rendering.camera.Camera import de.bixilon.minosoft.gui.rendering.events.ResizeWindowEvent import de.bixilon.minosoft.gui.rendering.events.WindowCloseEvent @@ -317,4 +321,15 @@ class RenderWindow( guiRenderer.pause(pause) } } + + fun runAsync(runnable: () -> Unit) { + DefaultThreadPool += ThreadPoolRunnable(ThreadPool.Priorities.HIGHER) { + try { + runnable() + } catch (error: Throwable) { + error.printStackTrace() + Exception("Exception in rendering: $connection", error).crash() + } + } + } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/camera/Camera.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/camera/Camera.kt index 4c3d6c174..0fdbe519f 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/camera/Camera.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/camera/Camera.kt @@ -13,9 +13,6 @@ package de.bixilon.minosoft.gui.rendering.camera -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.time.TimeUtil.millis import de.bixilon.minosoft.data.entities.entities.player.local.LocalPlayerEntity @@ -49,8 +46,8 @@ class Camera( view.draw() matrixHandler.draw() val latch = CountUpAndDownLatch(2) - DefaultThreadPool += ThreadPoolRunnable(ThreadPool.Priorities.HIGHER) { visibilityGraph.draw();latch.dec() } - DefaultThreadPool += ThreadPoolRunnable(ThreadPool.Priorities.HIGHER) { targetHandler.raycast();latch.dec() } + renderWindow.runAsync { visibilityGraph.draw();latch.dec() } + renderWindow.runAsync { targetHandler.raycast();latch.dec() } fogManager.draw() latch.await() }