Fixed dsp lle thread never starting because of dspjit initialization happening after the dsp thread check

This commit is contained in:
Jordan Cristiano 2015-03-27 00:29:57 -04:00
parent a2c4abcae8
commit e2060525bc

View File

@ -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;
}