mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
Core, VideoCommon: Fix crash at shutdown due to destructor ordering
Previously, PerformanceTracker registered a callback to be updated on emulation state changes. PerformanceTrackers live in a global variable (g_perf_metrics) within libvideocommon. The callback was stored in a global variable in libcore. This created a race condition at shutdown between these libraries, when the PerfTracker's destructor tried to unregister the callback. Notify the PerfTracker directly from libcore, without callbacks, since Core.cpp already references g_perf_metrics explicitly. Also rename Core::CallOnStateChangedCallbacks to NotifyStateChanged to better reflect what it's doing.
This commit is contained in:
@ -868,7 +868,7 @@ static void Step()
|
||||
{
|
||||
auto& system = Core::System::GetInstance();
|
||||
system.GetCPU().SetStepping(true);
|
||||
Core::CallOnStateChangedCallbacks(Core::State::Paused);
|
||||
Core::NotifyStateChanged(Core::State::Paused);
|
||||
}
|
||||
|
||||
static bool AddBreakpoint(BreakpointType type, u32 addr, u32 len)
|
||||
|
Reference in New Issue
Block a user