diff --git a/src/olympic/studio/applib/src/studioui.cpp b/src/olympic/studio/applib/src/studioui.cpp index 2593bf3a..1782fa64 100644 --- a/src/olympic/studio/applib/src/studioui.cpp +++ b/src/olympic/studio/applib/src/studioui.cpp @@ -588,7 +588,7 @@ ox::Error StudioUI::makeCopyDlg(ox::StringViewCR path) noexcept { ox::Error StudioUI::handleCloseAppResponse(ig::PopupResponse const response) noexcept { if (response == ig::PopupResponse::OK && m_activeEditor) { - turbine::requestShutdown(m_tctx); + turbine::requestShutdown(m_tctx, true); } return {}; } diff --git a/src/olympic/turbine/include/turbine/turbine.hpp b/src/olympic/turbine/include/turbine/turbine.hpp index 69d3274c..34e34a16 100644 --- a/src/olympic/turbine/include/turbine/turbine.hpp +++ b/src/olympic/turbine/include/turbine/turbine.hpp @@ -27,7 +27,7 @@ ox::Error run(Context &ctx) noexcept; [[nodiscard]] TimeMs ticksMs(Context const&ctx) noexcept; -void requestShutdown(Context &ctx) noexcept; +void requestShutdown(Context &ctx, bool force = false) noexcept; using ShutdownHandler = bool (*)(Context&); diff --git a/src/olympic/turbine/src/gba/turbine.cpp b/src/olympic/turbine/src/gba/turbine.cpp index 6c3cd24f..d4e3b258 100644 --- a/src/olympic/turbine/src/gba/turbine.cpp +++ b/src/olympic/turbine/src/gba/turbine.cpp @@ -82,7 +82,7 @@ bool buttonDown(Context const&, Key k) noexcept { return k <= Key::GamePad_L && !(REG_GAMEPAD & (1 << static_cast(k))); } -void requestShutdown(Context &ctx) noexcept { +void requestShutdown(Context &ctx, bool) noexcept { ctx.running = false; } diff --git a/src/olympic/turbine/src/glfw/turbine.cpp b/src/olympic/turbine/src/glfw/turbine.cpp index 3cce688b..f281dc7a 100644 --- a/src/olympic/turbine/src/glfw/turbine.cpp +++ b/src/olympic/turbine/src/glfw/turbine.cpp @@ -125,8 +125,11 @@ bool buttonDown(Context const&ctx, Key const key) noexcept { return (ctx.keysDown >> static_cast(key)) & 1; } -void requestShutdown(Context &ctx) noexcept { - ctx.running = false; +void requestShutdown(Context &ctx, bool const force) noexcept { + glfwSetWindowShouldClose(ctx.window, true); + if (force) { + ctx.running = false; + } } void setShutdownHandler(Context &ctx, ShutdownHandler const handler) noexcept {