diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2022-12-25 18:51:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-25 18:51:25 +0100 |
commit | 9933121256a259dfecc282358880278fd0c156f3 (patch) | |
tree | 4eb21b42d0cf151af5667bd26065f24a83691154 | |
parent | Merge pull request #9496 from liamwhite/shm3 (diff) | |
parent | qt: prevent reentrant shutdown (diff) | |
download | yuzu-9933121256a259dfecc282358880278fd0c156f3.tar yuzu-9933121256a259dfecc282358880278fd0c156f3.tar.gz yuzu-9933121256a259dfecc282358880278fd0c156f3.tar.bz2 yuzu-9933121256a259dfecc282358880278fd0c156f3.tar.lz yuzu-9933121256a259dfecc282358880278fd0c156f3.tar.xz yuzu-9933121256a259dfecc282358880278fd0c156f3.tar.zst yuzu-9933121256a259dfecc282358880278fd0c156f3.zip |
-rw-r--r-- | src/yuzu/main.cpp | 15 | ||||
-rw-r--r-- | src/yuzu/main.h | 2 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 6121711e0..524650144 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -1785,9 +1785,9 @@ void GMainWindow::BootGame(const QString& filename, u64 program_id, std::size_t OnStartGame(); } -void GMainWindow::OnShutdownBegin() { +bool GMainWindow::OnShutdownBegin() { if (!emulation_running) { - return; + return false; } if (ui->action_Fullscreen->isChecked()) { @@ -1799,6 +1799,10 @@ void GMainWindow::OnShutdownBegin() { // Disable unlimited frame rate Settings::values.use_speed_limit.SetValue(true); + if (system->IsShuttingDown()) { + return false; + } + system->SetShuttingDown(true); discord_rpc->Pause(); @@ -1817,6 +1821,8 @@ void GMainWindow::OnShutdownBegin() { ui->action_Pause->setEnabled(false); ui->action_Restart->setEnabled(false); ui->action_Stop->setEnabled(false); + + return true; } void GMainWindow::OnShutdownBeginDialog() { @@ -3003,8 +3009,9 @@ void GMainWindow::OnStopGame() { return; } - OnShutdownBegin(); - OnShutdownBeginDialog(); + if (OnShutdownBegin()) { + OnShutdownBeginDialog(); + } } void GMainWindow::OnLoadComplete() { diff --git a/src/yuzu/main.h b/src/yuzu/main.h index 95220b063..db318485d 100644 --- a/src/yuzu/main.h +++ b/src/yuzu/main.h @@ -336,7 +336,7 @@ private slots: void OnReinitializeKeys(ReinitializeKeyBehavior behavior); void OnLanguageChanged(const QString& locale); void OnMouseActivity(); - void OnShutdownBegin(); + bool OnShutdownBegin(); void OnShutdownBeginDialog(); void OnEmulationStopped(); void OnEmulationStopTimeExpired(); |