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:
parent
cd25817938
commit
925671071c
|
@ -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");
|
||||||
|
|
Reference in New Issue