From b6356eb5f8bb89a6b83ad8b6d6a4f21fdce43271 Mon Sep 17 00:00:00 2001 From: Gauvain 'GovanifY' Roussel-Tarbouriech Date: Fri, 25 Sep 2020 00:02:04 +0200 Subject: [PATCH] SPU2: implement lifecycle callbacks --- pcsx2/System/SysCoreThread.cpp | 8 ++++++++ pcsx2/gui/AppCoreThread.cpp | 2 ++ 2 files changed, 10 insertions(+) diff --git a/pcsx2/System/SysCoreThread.cpp b/pcsx2/System/SysCoreThread.cpp index f4d8fcbf10..75e6e61e05 100644 --- a/pcsx2/System/SysCoreThread.cpp +++ b/pcsx2/System/SysCoreThread.cpp @@ -28,6 +28,7 @@ #include "IPC.h" #include "FW.h" #include "SPU2/spu2.h" +#include "R3000A.h" #include "../DebugTools/MIPSAnalyst.h" #include "../DebugTools/SymbolMap.h" @@ -89,6 +90,7 @@ void SysCoreThread::Start() { if( !GetCorePlugins().AreLoaded() ) return; GetCorePlugins().Init(); + SPU2init(); _parent::Start(); } @@ -292,6 +294,7 @@ void SysCoreThread::OnSuspendInThread() GetCorePlugins().Close(); DoCDVDclose(); FWclose(); + SPU2close(); } void SysCoreThread::OnResumeInThread( bool isSuspended ) @@ -300,6 +303,9 @@ void SysCoreThread::OnResumeInThread( bool isSuspended ) if (isSuspended || !g_GameStarted) DoCDVDopen(); FWopen(); + SPU2open((void*)pDsp); + SPU2setDMABaseAddr((uptr)iopMem->Main); + SPU2setClockPtr(&psxRegs.cycle); } @@ -316,8 +322,10 @@ void SysCoreThread::OnCleanupInThread() vu1Thread.WaitVU(); DoCDVDclose(); FWclose(); + SPU2close(); GetCorePlugins().Close(); GetCorePlugins().Shutdown(); + SPU2shutdown(); _mm_setcsr( m_mxcsr_saved.bitmask ); Threading::DisableHiresScheduler(); diff --git a/pcsx2/gui/AppCoreThread.cpp b/pcsx2/gui/AppCoreThread.cpp index 0c2a292c4c..accfcf7bd4 100644 --- a/pcsx2/gui/AppCoreThread.cpp +++ b/pcsx2/gui/AppCoreThread.cpp @@ -28,6 +28,7 @@ #include "GS.h" #include "CDVD/CDVD.h" +#include "SPU2/spu2.h" #include "Elfheader.h" #include "Patch.h" #include "R5900Exceptions.h" @@ -161,6 +162,7 @@ void AppCoreThread::Resume() } GetCorePlugins().Init(); + SPU2init(); _parent::Resume(); }