From e2060525bc9c573ea61146f60cb2af57cb1207d1 Mon Sep 17 00:00:00 2001 From: Jordan Cristiano Date: Fri, 27 Mar 2015 00:29:57 -0400 Subject: [PATCH] Fixed dsp lle thread never starting because of dspjit initialization happening after the dsp thread check --- Source/Core/Core/HW/DSPLLE/DSPLLE.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp b/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp index f809b0488f..25a3ed83e3 100644 --- a/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp +++ b/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp @@ -172,10 +172,6 @@ static bool FillDSPInitOptions(DSPInitOptions* opts) bool DSPLLE::Initialize(bool bWii, bool bDSPThread) { - m_bWii = bWii; - m_bDSPThread = true; - if (NetPlay::IsNetPlayRunning() || Movie::IsMovieActive() || Core::g_want_determinism || !bDSPThread || !dspjit) - m_bDSPThread = false; requestDisableThread = false; DSPInitOptions opts; @@ -184,6 +180,15 @@ bool DSPLLE::Initialize(bool bWii, bool bDSPThread) if (!DSPCore_Init(opts)) return false; + // needs to be after DSPCore_Init for the dspjit ptr + if (NetPlay::IsNetPlayRunning() || Movie::IsMovieActive() || + Core::g_want_determinism || !dspjit) + { + bDSPThread = false; + } + m_bWii = bWii; + m_bDSPThread = bDSPThread; + // DSPLLE directly accesses the fastmem arena. // TODO: The fastmem arena is only supposed to be used by the JIT: // among other issues, its size is only 1GB on 32-bit targets. @@ -192,14 +197,13 @@ bool DSPLLE::Initialize(bool bWii, bool bDSPThread) InitInstructionTable(); - if (m_bDSPThread) + if (bDSPThread) { m_bIsRunning.Set(true); m_hDSPThread = std::thread(DSPThread, this); } Host_RefreshDSPDebuggerWindow(); - return true; }