summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorliamwhite <liamwhite@users.noreply.github.com>2022-12-25 18:51:25 +0100
committerGitHub <noreply@github.com>2022-12-25 18:51:25 +0100
commit9933121256a259dfecc282358880278fd0c156f3 (patch)
tree4eb21b42d0cf151af5667bd26065f24a83691154
parentMerge pull request #9496 from liamwhite/shm3 (diff)
parentqt: prevent reentrant shutdown (diff)
downloadyuzu-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.cpp15
-rw-r--r--src/yuzu/main.h2
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();