From 7d008ce06972fca80dca7e7a7a38a5c4cacdc029 Mon Sep 17 00:00:00 2001 From: DimaLeon2000 Date: Fri, 13 Oct 2023 22:32:42 +0900 Subject: [PATCH] MxMediaPresenter, MxMusicManager and MxMusicPresenter * Refactoring Destroy functions --- LEGO1/mxmediapresenter.cpp | 4 +-- LEGO1/mxmediapresenter.h | 5 ++- LEGO1/mxmusicmanager.cpp | 72 +++++++++++++++++++------------------- LEGO1/mxmusicmanager.h | 2 +- LEGO1/mxmusicpresenter.cpp | 8 ++--- LEGO1/mxmusicpresenter.h | 4 +-- 6 files changed, 47 insertions(+), 48 deletions(-) diff --git a/LEGO1/mxmediapresenter.cpp b/LEGO1/mxmediapresenter.cpp index 00a2b851..2fb6b57c 100644 --- a/LEGO1/mxmediapresenter.cpp +++ b/LEGO1/mxmediapresenter.cpp @@ -25,7 +25,7 @@ void MxMediaPresenter::Init() } // OFFSET: LEGO1 0x100b54f0 STUB -void MxMediaPresenter::Destroy(MxBool p_destroy) +void MxMediaPresenter::Destroy(MxBool p_fromDestructor) { // TODO } @@ -57,7 +57,7 @@ void MxMediaPresenter::Enable(MxBool p_enable) } // OFFSET: LEGO1 0x1000c5b0 -void MxMediaPresenter::InitVirtual() +void MxMediaPresenter::Destroy() { Destroy(FALSE); } diff --git a/LEGO1/mxmediapresenter.h b/LEGO1/mxmediapresenter.h index 6b8fd552..e7b18f2f 100644 --- a/LEGO1/mxmediapresenter.h +++ b/LEGO1/mxmediapresenter.h @@ -33,7 +33,7 @@ class MxMediaPresenter : public MxPresenter virtual void StreamingTickle() override; virtual void RepeatingTickle() override; virtual void DoneTickle() override; - virtual void InitVirtual() override; + virtual void Destroy() override; virtual MxLong StartAction(MxStreamController *, MxDSAction *) override; virtual void EndAction() override; virtual void Enable(MxBool p_enable) override; @@ -43,10 +43,9 @@ class MxMediaPresenter : public MxPresenter undefined4 m_unk44; undefined4 m_unk48; undefined4 m_unk4c; -protected: - void Destroy(MxBool); private: void Init(); + void Destroy(MxBool p_fromDestructor); }; diff --git a/LEGO1/mxmusicmanager.cpp b/LEGO1/mxmusicmanager.cpp index 6f49adcc..c1488f43 100644 --- a/LEGO1/mxmusicmanager.cpp +++ b/LEGO1/mxmusicmanager.cpp @@ -15,7 +15,7 @@ MxMusicManager::MxMusicManager() // OFFSET: LEGO1 0x100c0630 MxMusicManager::~MxMusicManager() { - LockedReinitialize(TRUE); + Destroy(TRUE); } // OFFSET: LEGO1 0x100c0b20 @@ -23,47 +23,47 @@ void MxMusicManager::DeinitializeMIDI() { m_criticalSection.Enter(); - if (this->m_MIDIInitialized) + if (m_MIDIInitialized) { - this->m_MIDIInitialized = FALSE; - midiStreamStop(this->m_MIDIStreamH); - midiOutUnprepareHeader(this->m_MIDIStreamH, this->m_MIDIHdrP, sizeof(MIDIHDR)); - midiOutSetVolume(this->m_MIDIStreamH, this->m_MIDIVolume); - midiStreamClose(this->m_MIDIStreamH); - delete this->m_MIDIHdrP; - this->InitData(); + m_MIDIInitialized = FALSE; + midiStreamStop(m_MIDIStreamH); + midiOutUnprepareHeader(m_MIDIStreamH, m_MIDIHdrP, sizeof(MIDIHDR)); + midiOutSetVolume(m_MIDIStreamH, m_MIDIVolume); + midiStreamClose(m_MIDIStreamH); + delete m_MIDIHdrP; + InitData(); } - this->m_criticalSection.Leave(); + m_criticalSection.Leave(); } // OFFSET: LEGO1 0x100c0690 void MxMusicManager::Init() { - this->m_multiplier = 100; + m_multiplier = 100; InitData(); } // OFFSET: LEGO1 0x100c06a0 void MxMusicManager::InitData() { - this->m_MIDIStreamH = 0; - this->m_MIDIInitialized = FALSE; - this->m_unk38 = 0; - this->m_unk3c = 0; - this->m_unk40 = 0; - this->m_unk44 = 0; - this->m_unk48 = 0; - this->m_MIDIHdrP = NULL; + m_MIDIStreamH = 0; + m_MIDIInitialized = FALSE; + m_unk38 = 0; + m_unk3c = 0; + m_unk40 = 0; + m_unk44 = 0; + m_unk48 = 0; + m_MIDIHdrP = NULL; } // OFFSET: LEGO1 0x100c06c0 -void MxMusicManager::LockedReinitialize(MxBool p_skipDestroy) +void MxMusicManager::Destroy(MxBool p_fromDestructor) { - if (this->m_thread) + if (m_thread) { - this->m_thread->Terminate(); - if (this->m_thread) + m_thread->Terminate(); + if (m_thread) { delete m_thread; } @@ -73,12 +73,12 @@ void MxMusicManager::LockedReinitialize(MxBool p_skipDestroy) TickleManager()->UnregisterClient(this); } - this->m_criticalSection.Enter(); + m_criticalSection.Enter(); DeinitializeMIDI(); Init(); - this->m_criticalSection.Leave(); + m_criticalSection.Leave(); - if (!p_skipDestroy) + if (!p_fromDestructor) { MxAudioManager::Destroy(); } @@ -87,7 +87,7 @@ void MxMusicManager::LockedReinitialize(MxBool p_skipDestroy) // OFFSET: LEGO1 0x100c0930 void MxMusicManager::Destroy() { - LockedReinitialize(FALSE); + Destroy(FALSE); } // OFFSET: LEGO1 0x100c09a0 @@ -100,8 +100,8 @@ MxS32 MxMusicManager::CalculateVolume(MxS32 p_volume) // OFFSET: LEGO1 0x100c07f0 void MxMusicManager::SetMIDIVolume() { - MxS32 result = (this->m_volume * this->m_multiplier) / 0x64; - HMIDISTRM streamHandle = this->m_MIDIStreamH; + MxS32 result = (m_volume * m_multiplier) / 0x64; + HMIDISTRM streamHandle = m_MIDIStreamH; if (streamHandle) { @@ -114,9 +114,9 @@ void MxMusicManager::SetMIDIVolume() void MxMusicManager::SetVolume(MxS32 p_volume) { MxAudioManager::SetVolume(p_volume); - this->m_criticalSection.Enter(); + m_criticalSection.Enter(); SetMIDIVolume(); - this->m_criticalSection.Leave(); + m_criticalSection.Leave(); } // OFFSET: LEGO1 0x100c0840 @@ -130,13 +130,13 @@ MxResult MxMusicManager::StartMIDIThread(MxU32 p_frequencyMS, MxBool p_noRegiste { if (p_noRegister) { - this->m_criticalSection.Enter(); + m_criticalSection.Enter(); locked = TRUE; - this->m_thread = new MxTickleThread(this, p_frequencyMS); + m_thread = new MxTickleThread(this, p_frequencyMS); - if (this->m_thread) + if (m_thread) { - if (this->m_thread->Start(0, 0) == SUCCESS) + if (m_thread->Start(0, 0) == SUCCESS) { status = SUCCESS; } @@ -156,7 +156,7 @@ MxResult MxMusicManager::StartMIDIThread(MxU32 p_frequencyMS, MxBool p_noRegiste if (locked) { - this->m_criticalSection.Leave(); + m_criticalSection.Leave(); } return status; diff --git a/LEGO1/mxmusicmanager.h b/LEGO1/mxmusicmanager.h index 1a828c84..d60d787e 100644 --- a/LEGO1/mxmusicmanager.h +++ b/LEGO1/mxmusicmanager.h @@ -17,7 +17,7 @@ class MxMusicManager : public MxAudioManager virtual MxResult StartMIDIThread(MxU32 p_frequencyMS, MxU8 p_noRegister); // vtable+30 private: - void LockedReinitialize(MxBool p_skipDestroy); + void Destroy(MxBool p_fromDestructor); void DeinitializeMIDI(); MxS32 CalculateVolume(MxS32 p_volume); diff --git a/LEGO1/mxmusicpresenter.cpp b/LEGO1/mxmusicpresenter.cpp index a10141d7..608da589 100644 --- a/LEGO1/mxmusicpresenter.cpp +++ b/LEGO1/mxmusicpresenter.cpp @@ -24,7 +24,7 @@ void MxMusicPresenter::Init() } // OFFSET: LEGO1 0x100c2550 -void MxMusicPresenter::Destroy(MxBool p_reinit) +void MxMusicPresenter::Destroy(MxBool p_fromDestructor) { if (MusicManager()) { MusicManager()->RemovePresenter(*this); @@ -32,8 +32,8 @@ void MxMusicPresenter::Destroy(MxBool p_reinit) m_criticalSection.Enter(); Init(); m_criticalSection.Leave(); - if (!p_reinit) { - MxMediaPresenter::Destroy(FALSE); + if (!p_fromDestructor) { + MxMediaPresenter::Destroy(); } } @@ -49,7 +49,7 @@ MxResult MxMusicPresenter::AddToMusicManager() } // OFFSET: LEGO1 0x100c25d0 -void MxMusicPresenter::InitVirtual() +void MxMusicPresenter::Destroy() { Destroy(FALSE); } diff --git a/LEGO1/mxmusicpresenter.h b/LEGO1/mxmusicpresenter.h index 12b63b43..89037922 100644 --- a/LEGO1/mxmusicpresenter.h +++ b/LEGO1/mxmusicpresenter.h @@ -25,11 +25,11 @@ class MxMusicPresenter : public MxAudioPresenter virtual ~MxMusicPresenter() override; virtual MxResult AddToMusicManager(); // vtable+0x34 - virtual void InitVirtual(); // vtable+0x38 + virtual void Destroy(); // vtable+0x38 private: void Init(); - void Destroy(MxBool p_reinit); + void Destroy(MxBool p_fromDestructor); }; #endif // MXMUSICPRESENTER_H