forked from suyu/suyu
qt: prevent reentrant shutdown
This commit is contained in:
parent
c86e21abe4
commit
cb7f0c2ec3
2 changed files with 12 additions and 5 deletions
|
@ -1785,9 +1785,9 @@ void GMainWindow::BootGame(const QString& filename, u64 program_id, std::size_t
|
||||||
OnStartGame();
|
OnStartGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMainWindow::OnShutdownBegin() {
|
bool GMainWindow::OnShutdownBegin() {
|
||||||
if (!emulation_running) {
|
if (!emulation_running) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ui->action_Fullscreen->isChecked()) {
|
if (ui->action_Fullscreen->isChecked()) {
|
||||||
|
@ -1799,6 +1799,10 @@ void GMainWindow::OnShutdownBegin() {
|
||||||
// Disable unlimited frame rate
|
// Disable unlimited frame rate
|
||||||
Settings::values.use_speed_limit.SetValue(true);
|
Settings::values.use_speed_limit.SetValue(true);
|
||||||
|
|
||||||
|
if (system->IsShuttingDown()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
system->SetShuttingDown(true);
|
system->SetShuttingDown(true);
|
||||||
discord_rpc->Pause();
|
discord_rpc->Pause();
|
||||||
|
|
||||||
|
@ -1817,6 +1821,8 @@ void GMainWindow::OnShutdownBegin() {
|
||||||
ui->action_Pause->setEnabled(false);
|
ui->action_Pause->setEnabled(false);
|
||||||
ui->action_Restart->setEnabled(false);
|
ui->action_Restart->setEnabled(false);
|
||||||
ui->action_Stop->setEnabled(false);
|
ui->action_Stop->setEnabled(false);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMainWindow::OnShutdownBeginDialog() {
|
void GMainWindow::OnShutdownBeginDialog() {
|
||||||
|
@ -3003,8 +3009,9 @@ void GMainWindow::OnStopGame() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
OnShutdownBegin();
|
if (OnShutdownBegin()) {
|
||||||
OnShutdownBeginDialog();
|
OnShutdownBeginDialog();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMainWindow::OnLoadComplete() {
|
void GMainWindow::OnLoadComplete() {
|
||||||
|
|
|
@ -336,7 +336,7 @@ private slots:
|
||||||
void OnReinitializeKeys(ReinitializeKeyBehavior behavior);
|
void OnReinitializeKeys(ReinitializeKeyBehavior behavior);
|
||||||
void OnLanguageChanged(const QString& locale);
|
void OnLanguageChanged(const QString& locale);
|
||||||
void OnMouseActivity();
|
void OnMouseActivity();
|
||||||
void OnShutdownBegin();
|
bool OnShutdownBegin();
|
||||||
void OnShutdownBeginDialog();
|
void OnShutdownBeginDialog();
|
||||||
void OnEmulationStopped();
|
void OnEmulationStopped();
|
||||||
void OnEmulationStopTimeExpired();
|
void OnEmulationStopTimeExpired();
|
||||||
|
|
Loading…
Reference in a new issue