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 13d3a0c84..cea8b3c5e 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt @@ -206,7 +206,7 @@ class RenderWindow( inputHandler.init() DefaultKeyCombinations.registerAll(this) this::state.observe(this) { - if (it != RenderingStates.RUNNING) { + if (it == RenderingStates.PAUSED || it == RenderingStates.SLOW || it == RenderingStates.STOPPED) { pause(true) } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/BaseWindow.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/BaseWindow.kt index bb68d5e66..715568f97 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/BaseWindow.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/BaseWindow.kt @@ -19,6 +19,7 @@ import de.bixilon.minosoft.assets.AssetsManager import de.bixilon.minosoft.config.profile.delegate.watcher.SimpleProfileDelegateWatcher.Companion.profileWatchRendering import de.bixilon.minosoft.config.profile.profiles.rendering.RenderingProfile import de.bixilon.minosoft.gui.rendering.RenderWindow +import de.bixilon.minosoft.gui.rendering.events.WindowCloseEvent import de.bixilon.minosoft.terminal.RunConfiguration import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.matthiasmann.twl.utils.PNGDecoder @@ -65,7 +66,14 @@ interface BaseWindow { fun destroy() - fun close() + fun close() { + if (fireGLFWEvent(WindowCloseEvent(renderWindow, window = this))) { + return + } + forceClose() + } + + fun forceClose() fun swapBuffers() diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/GLFWWindow.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/GLFWWindow.kt index b2082065d..4bbbb0ea2 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/GLFWWindow.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/GLFWWindow.kt @@ -247,11 +247,7 @@ class GLFWWindow( glfwSetErrorCallback(null)?.free() } - override fun close() { - if (fireGLFWEvent(WindowCloseEvent(renderWindow, window = this))) { - return - } - + override fun forceClose() { glfwSetWindowShouldClose(window, true) }