mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-18 03:44:54 -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
|
package de.bixilon.minosoft.gui.rendering
|
||||||
|
|
||||||
import de.bixilon.kotlinglm.vec2.Vec2i
|
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.concurrent.queue.Queue
|
||||||
import de.bixilon.kutil.latch.CountUpAndDownLatch
|
import de.bixilon.kutil.latch.CountUpAndDownLatch
|
||||||
import de.bixilon.kutil.math.simple.DoubleMath.rounded10
|
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.observer.DataObserver.Companion.observed
|
||||||
import de.bixilon.kutil.primitive.BooleanUtil.decide
|
import de.bixilon.kutil.primitive.BooleanUtil.decide
|
||||||
import de.bixilon.kutil.time.TimeUtil.millis
|
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.camera.Camera
|
||||||
import de.bixilon.minosoft.gui.rendering.events.ResizeWindowEvent
|
import de.bixilon.minosoft.gui.rendering.events.ResizeWindowEvent
|
||||||
import de.bixilon.minosoft.gui.rendering.events.WindowCloseEvent
|
import de.bixilon.minosoft.gui.rendering.events.WindowCloseEvent
|
||||||
@ -317,4 +321,15 @@ class RenderWindow(
|
|||||||
guiRenderer.pause(pause)
|
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
|
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.latch.CountUpAndDownLatch
|
||||||
import de.bixilon.kutil.time.TimeUtil.millis
|
import de.bixilon.kutil.time.TimeUtil.millis
|
||||||
import de.bixilon.minosoft.data.entities.entities.player.local.LocalPlayerEntity
|
import de.bixilon.minosoft.data.entities.entities.player.local.LocalPlayerEntity
|
||||||
@ -49,8 +46,8 @@ class Camera(
|
|||||||
view.draw()
|
view.draw()
|
||||||
matrixHandler.draw()
|
matrixHandler.draw()
|
||||||
val latch = CountUpAndDownLatch(2)
|
val latch = CountUpAndDownLatch(2)
|
||||||
DefaultThreadPool += ThreadPoolRunnable(ThreadPool.Priorities.HIGHER) { visibilityGraph.draw();latch.dec() }
|
renderWindow.runAsync { visibilityGraph.draw();latch.dec() }
|
||||||
DefaultThreadPool += ThreadPoolRunnable(ThreadPool.Priorities.HIGHER) { targetHandler.raycast();latch.dec() }
|
renderWindow.runAsync { targetHandler.raycast();latch.dec() }
|
||||||
fogManager.draw()
|
fogManager.draw()
|
||||||
latch.await()
|
latch.await()
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user