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