core: Shutdown: Move kernel cleanup to later in shutdown.

- Fixes a shutdown crash due to a race condition with GPU still accessing memory.
This commit is contained in:
bunnei 2021-03-01 21:42:06 -08:00
parent cd25817938
commit 925671071c

View file

@ -299,28 +299,17 @@ struct System::Impl {
gpu_core->WaitIdle(); gpu_core->WaitIdle();
} }
// Shutdown emulation session
services.reset(); services.reset();
service_manager.reset(); service_manager.reset();
cheat_engine.reset(); cheat_engine.reset();
telemetry_session.reset(); telemetry_session.reset();
// Close all CPU/threading state
cpu_manager.Shutdown(); cpu_manager.Shutdown();
// Release the Time Manager's resources
time_manager.Shutdown(); time_manager.Shutdown();
// Shutdown kernel and core timing
core_timing.Shutdown(); core_timing.Shutdown();
kernel.Shutdown();
// Close app loader
app_loader.reset(); app_loader.reset();
gpu_core.reset(); gpu_core.reset();
perf_stats.reset(); perf_stats.reset();
kernel.Shutdown();
// Clear all applets
applet_manager.ClearAll(); applet_manager.ClearAll();
LOG_DEBUG(Core, "Shutdown OK"); LOG_DEBUG(Core, "Shutdown OK");