From 4a59ea37a8a37a2100278143b9c9591df8a54feb Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Fri, 20 Oct 2023 14:35:23 -0400 Subject: [PATCH] Fix and implement Destroy --- LEGO1/mxeventpresenter.cpp | 19 ++++++++++++++++--- LEGO1/mxeventpresenter.h | 5 ++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/LEGO1/mxeventpresenter.cpp b/LEGO1/mxeventpresenter.cpp index 2830f0e1..3a4ff7f4 100644 --- a/LEGO1/mxeventpresenter.cpp +++ b/LEGO1/mxeventpresenter.cpp @@ -1,4 +1,6 @@ #include "mxeventpresenter.h" +#include "mxeventmanager.h" +#include "mxomni.h" #include "decomp.h" @@ -19,11 +21,22 @@ MxEventPresenter::~MxEventPresenter() // OFFSET: LEGO1 0x100c2da0 void MxEventPresenter::Init() { - m_unk50 = 0; + m_unk50 = NULL; } -// OFFSET: LEGO1 0x100c2de0 STUB +// OFFSET: LEGO1 0x100c2de0 void MxEventPresenter::Destroy() { - // TODO + MxEventManager *eventManager = EventManager(); + if (eventManager) + EventManager()->RemovePresenter(*this); + + m_criticalSection.Enter(); + + if (m_unk50) + delete m_unk50; + + Init(); + + m_criticalSection.Leave(); } diff --git a/LEGO1/mxeventpresenter.h b/LEGO1/mxeventpresenter.h index 07d56ca6..4b2dc040 100644 --- a/LEGO1/mxeventpresenter.h +++ b/LEGO1/mxeventpresenter.h @@ -28,10 +28,9 @@ class MxEventPresenter : public MxMediaPresenter private: void Init(); - void Destroy(); - - undefined4 m_unk50; + virtual void Destroy() override; + undefined4 *m_unk50; }; #endif // MXEVENTPRESENTER_H