mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-17 03:15:35 -04:00
renderWindow: properly crash when error happens in camera
This commit is contained in:
parent
a96b520331
commit
50ca6b3dae
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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()
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user