qt: prevent reentrant shutdown

This commit is contained in:
Liam 2022-12-24 17:31:34 -05:00
parent c86e21abe4
commit cb7f0c2ec3
2 changed files with 12 additions and 5 deletions

View file

@ -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() {

View file

@ -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();