diff options
| author | 2022-12-23 21:03:58 -0500 | |
|---|---|---|
| committer | 2022-12-23 21:03:58 -0500 | |
| commit | fa231645f276c80c34f3b439bd2f60b3d743a789 (patch) | |
| tree | e146caff183640809e7707b0b53e9614a8dc6f9a | |
| parent | Merge pull request #9463 from liamwhite/manager-events (diff) | |
| parent | qt: exit properly on guest-initiated close (diff) | |
| download | yuzu-fa231645f276c80c34f3b439bd2f60b3d743a789.tar.gz yuzu-fa231645f276c80c34f3b439bd2f60b3d743a789.tar.xz yuzu-fa231645f276c80c34f3b439bd2f60b3d743a789.zip | |
Merge pull request #9486 from liamwhite/shutdown-hell
qt: exit properly on guest-initiated close
Diffstat (limited to '')
| -rw-r--r-- | src/yuzu/bootmanager.cpp | 1 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 9 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp index 13782869d..3d560f303 100644 --- a/src/yuzu/bootmanager.cpp +++ b/src/yuzu/bootmanager.cpp | |||
| @@ -78,7 +78,6 @@ void EmuThread::run() { | |||
| 78 | gpu.Start(); | 78 | gpu.Start(); |
| 79 | 79 | ||
| 80 | m_system.GetCpuManager().OnGpuReady(); | 80 | m_system.GetCpuManager().OnGpuReady(); |
| 81 | m_system.RegisterExitCallback([this] { m_stop_source.request_stop(); }); | ||
| 82 | 81 | ||
| 83 | if (m_system.DebuggerEnabled()) { | 82 | if (m_system.DebuggerEnabled()) { |
| 84 | m_system.InitializeDebugger(); | 83 | m_system.InitializeDebugger(); |
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 820f60e61..7ec613669 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp | |||
| @@ -1710,6 +1710,11 @@ void GMainWindow::BootGame(const QString& filename, u64 program_id, std::size_t | |||
| 1710 | system->RegisterExecuteProgramCallback( | 1710 | system->RegisterExecuteProgramCallback( |
| 1711 | [this](std::size_t program_index_) { render_window->ExecuteProgram(program_index_); }); | 1711 | [this](std::size_t program_index_) { render_window->ExecuteProgram(program_index_); }); |
| 1712 | 1712 | ||
| 1713 | system->RegisterExitCallback([this] { | ||
| 1714 | emu_thread->ForceStop(); | ||
| 1715 | render_window->Exit(); | ||
| 1716 | }); | ||
| 1717 | |||
| 1713 | connect(render_window, &GRenderWindow::Closed, this, &GMainWindow::OnStopGame); | 1718 | connect(render_window, &GRenderWindow::Closed, this, &GMainWindow::OnStopGame); |
| 1714 | connect(render_window, &GRenderWindow::MouseActivity, this, &GMainWindow::OnMouseActivity); | 1719 | connect(render_window, &GRenderWindow::MouseActivity, this, &GMainWindow::OnMouseActivity); |
| 1715 | // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views | 1720 | // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views |
| @@ -4143,6 +4148,10 @@ bool GMainWindow::ConfirmForceLockedExit() { | |||
| 4143 | } | 4148 | } |
| 4144 | 4149 | ||
| 4145 | void GMainWindow::RequestGameExit() { | 4150 | void GMainWindow::RequestGameExit() { |
| 4151 | if (!system->IsPoweredOn()) { | ||
| 4152 | return; | ||
| 4153 | } | ||
| 4154 | |||
| 4146 | auto& sm{system->ServiceManager()}; | 4155 | auto& sm{system->ServiceManager()}; |
| 4147 | auto applet_oe = sm.GetService<Service::AM::AppletOE>("appletOE"); | 4156 | auto applet_oe = sm.GetService<Service::AM::AppletOE>("appletOE"); |
| 4148 | auto applet_ae = sm.GetService<Service::AM::AppletAE>("appletAE"); | 4157 | auto applet_ae = sm.GetService<Service::AM::AppletAE>("appletAE"); |