Skip to content

Commit 678d83d

Browse files
committed
crash: don't show eros, don't kill thread pool, destroy rendering windows
1 parent 7d05e2d commit 678d83d

File tree

3 files changed

+20
-18
lines changed

3 files changed

+20
-18
lines changed

src/main/java/de/bixilon/minosoft/gui/eros/Eros.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Minosoft
3-
* Copyright (C) 2020-2023 Moritz Zwerger
3+
* Copyright (C) 2020-2025 Moritz Zwerger
44
*
55
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
66
*
@@ -21,6 +21,7 @@ import de.bixilon.kutil.observer.DataObserver.Companion.observe
2121
import de.bixilon.minosoft.config.profile.profiles.eros.ErosProfileManager
2222
import de.bixilon.minosoft.config.profile.profiles.other.OtherProfileManager
2323
import de.bixilon.minosoft.data.registries.identified.Namespaces.i18n
24+
import de.bixilon.minosoft.gui.eros.crash.CrashReportState
2425
import de.bixilon.minosoft.gui.eros.dialog.UpdateAvailableDialog
2526
import de.bixilon.minosoft.gui.eros.dialog.simple.ConfirmationDialog
2627
import de.bixilon.minosoft.gui.eros.main.MainErosController
@@ -59,12 +60,10 @@ object Eros {
5960

6061
@Synchronized
6162
fun setVisibility(visible: Boolean) {
62-
if (visible == this.visible) {
63-
return
64-
}
65-
if (!initialized) {
66-
return
67-
}
63+
if (visible == this.visible) return
64+
if (CrashReportState.crashed) return
65+
if (!initialized) return
66+
6867
if (visible) {
6968
mainErosController.stage.show()
7069
} else {

src/main/java/de/bixilon/minosoft/gui/eros/crash/ErosCrashReport.kt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
package de.bixilon.minosoft.gui.eros.crash
1515

1616
import de.bixilon.kutil.collections.CollectionUtil.toSynchronizedSet
17-
import de.bixilon.kutil.concurrent.pool.DefaultThreadPool
1817
import de.bixilon.kutil.exception.ExceptionUtil.catchAll
1918
import de.bixilon.kutil.exception.ExceptionUtil.toStackTrace
2019
import de.bixilon.kutil.file.FileUtil.div
@@ -102,19 +101,20 @@ class ErosCrashReport : JavaFXWindowController() {
102101
error.toStackTrace()
103102
}
104103

105-
// Kill some stuff
106-
catchAll(executor = { DefaultThreadPool.shutdownNow() })
107-
catchAll(executor = { FileWatcherService.stop() })
108-
catchAll(executor = {
109-
for (window in Window.getWindows().toSynchronizedSet()) {
110-
JavaFXUtil.runLater { window.hide() }
111-
}
112-
})
113-
catchAll(executor = {
104+
catchAll {
114105
for (session in PlaySession.ACTIVE_CONNECTIONS.toSynchronizedSet()) {
115106
session.terminate()
107+
session.rendering?.context?.window?.destroy()
116108
}
117-
})
109+
}
110+
catchAll {
111+
for (window in Window.getWindows().toSynchronizedSet()) {
112+
JavaFXUtil.runLater { window.hide() }
113+
}
114+
}
115+
116+
// Kill some stuff
117+
catchAll { FileWatcherService.stop() }
118118

119119

120120
var crashReportPath: File?

src/main/java/de/bixilon/minosoft/gui/rendering/RenderUtil.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import de.bixilon.kutil.concurrent.pool.runnable.SimplePoolRunnable
2020
import de.bixilon.minosoft.gui.eros.crash.ErosCrashReport.Companion.crash
2121
import de.bixilon.minosoft.gui.rendering.RenderConstants.UV_ADD
2222
import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
23+
import de.bixilon.minosoft.gui.rendering.system.window.CursorModes
2324

2425
object RenderUtil {
2526

@@ -33,6 +34,8 @@ object RenderUtil {
3334
try {
3435
runnable()
3536
} catch (error: Throwable) {
37+
window.cursorMode = CursorModes.NORMAL
38+
window.destroy()
3639
error.printStackTrace()
3740
Exception("Exception in rendering: ${session.id}", error).crash()
3841
}

0 commit comments

Comments
 (0)