diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2022-12-16 11:57:33 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-16 11:57:33 -0500 |
commit | 6bc1a477bfba9f1ac60b864ddbccbfd61faa5f4c (patch) | |
tree | f744a93874c713608617364205fe70605b6e63ec /src/yuzu/main.cpp | |
parent | 9bfd4d880ecc332b230c9977654849d7521c93fb (diff) | |
parent | 179adee396e6b8480d52be5314979830beebfbc1 (diff) |
Merge pull request #8605 from devsnek/graceful-shutdown
let games gracefully exit
Diffstat (limited to 'src/yuzu/main.cpp')
-rw-r--r-- | src/yuzu/main.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index df7166d4b..70552bdb8 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -1710,9 +1710,6 @@ void GMainWindow::BootGame(const QString& filename, u64 program_id, std::size_t system->RegisterExecuteProgramCallback( [this](std::size_t program_index_) { render_window->ExecuteProgram(program_index_); }); - // Register an Exit callback such that Core can exit the currently running application. - system->RegisterExitCallback([this]() { render_window->Exit(); }); - connect(render_window, &GRenderWindow::Closed, this, &GMainWindow::OnStopGame); connect(render_window, &GRenderWindow::MouseActivity, this, &GMainWindow::OnMouseActivity); // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views @@ -1799,12 +1796,16 @@ void GMainWindow::ShutdownGame() { system->SetShuttingDown(true); system->DetachDebugger(); discord_rpc->Pause(); - emu_thread->RequestStop(); + + RequestGameExit(); emit EmulationStopping(); // Wait for emulation thread to complete and delete it - emu_thread->wait(); + if (!emu_thread->wait(5000)) { + emu_thread->ForceStop(); + emu_thread->wait(); + } emu_thread = nullptr; emulation_running = false; |