From e25f287d6061cc8b80bed05ea56ecda8727d5f4a Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 8 Mar 2025 15:22:07 +1000 Subject: [PATCH] Qt: Avoid stuck in temporary render-to-separate mode --- src/duckstation-qt/mainwindow.cpp | 12 +++++++++--- src/duckstation-qt/qthost.cpp | 2 +- src/duckstation-qt/qthost.h | 3 +++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/duckstation-qt/mainwindow.cpp b/src/duckstation-qt/mainwindow.cpp index a0d9d551e..120254bc7 100644 --- a/src/duckstation-qt/mainwindow.cpp +++ b/src/duckstation-qt/mainwindow.cpp @@ -121,6 +121,11 @@ bool QtHost::IsSystemValid() return s_system_valid; } +bool QtHost::IsFullscreenUIStarted() +{ + return s_fullscreen_ui_started; +} + const QString& QtHost::GetCurrentGameTitle() { return s_current_game_title; @@ -1987,8 +1992,8 @@ bool MainWindow::shouldHideMouseCursor() const bool MainWindow::shouldHideMainWindow() const { - return Host::GetBoolSettingValue("Main", "HideMainWindowWhenRunning", false) || - (QtHost::CanRenderToMainWindow() && isRenderingFullscreen()) || QtHost::InNoGUIMode(); + return Host::GetBoolSettingValue("Main", "HideMainWindowWhenRunning", false) || QtHost::CanRenderToMainWindow() || + QtHost::InNoGUIMode(); } void MainWindow::switchToGameListView() @@ -2616,7 +2621,8 @@ bool MainWindow::requestShutdown(bool allow_confirm /* = true */, bool allow_sav save_state = save_cb->isChecked(); // Don't switch back to fullscreen when we're shutting down anyway. - lock.cancelResume(); + if (!QtHost::IsFullscreenUIStarted()) + lock.cancelResume(); } // This is a little bit annoying. Qt will close everything down if we don't have at least one window visible, diff --git a/src/duckstation-qt/qthost.cpp b/src/duckstation-qt/qthost.cpp index de7eeccf3..d0267661b 100644 --- a/src/duckstation-qt/qthost.cpp +++ b/src/duckstation-qt/qthost.cpp @@ -1166,7 +1166,7 @@ void EmuThread::confirmActionIfMemoryCardBusy(const QString& action, bool cancel "seconds for it to finish saving.\n\nDo you want to %1 anyway?") .arg(action)) != QMessageBox::No); - if (cancel_resume_on_accept) + if (cancel_resume_on_accept && !QtHost::IsFullscreenUIStarted()) lock.cancelResume(); Host::RunOnCPUThread([result, callback = std::move(callback)]() { callback(result); }); diff --git a/src/duckstation-qt/qthost.h b/src/duckstation-qt/qthost.h index 5692654b6..f416d8a48 100644 --- a/src/duckstation-qt/qthost.h +++ b/src/duckstation-qt/qthost.h @@ -382,6 +382,9 @@ bool ShouldShowDebugOptions(); bool IsSystemValid(); bool IsSystemPaused(); +/// Returns true if fullscreen UI is requested. +bool IsFullscreenUIStarted(); + /// Returns true if any lock is in place. bool IsSystemLocked();