Implement MxVideoManager::Destroy / destructor (#207)

* MxVideoManager::Destroy / destructor

* Consistency

* Add missing override
This commit is contained in:
Christian Semmler
2023-10-14 14:46:00 -04:00
committed by GitHub
parent f062543f87
commit 5ddfaab9e7
3 changed files with 51 additions and 6 deletions

View File

@@ -1,6 +1,8 @@
#include "mxvideomanager.h"
#include "mxautolocker.h"
#include "mxpresenter.h"
#include "mxticklemanager.h"
#include "legoomni.h"
// OFFSET: LEGO1 0x100be1f0
MxVideoManager::MxVideoManager()
@@ -8,10 +10,10 @@ MxVideoManager::MxVideoManager()
Init();
}
// OFFSET: LEGO1 0x100be2a0 STUB
// OFFSET: LEGO1 0x100be2a0
MxVideoManager::~MxVideoManager()
{
// TODO
Destroy(TRUE);
}
// OFFSET: LEGO1 0x100bea90
@@ -50,6 +52,41 @@ MxResult MxVideoManager::Init()
return SUCCESS;
}
// OFFSET: LEGO1 0x100be340
void MxVideoManager::Destroy(MxBool p_fromDestructor)
{
if (m_thread) {
m_thread->Terminate();
delete m_thread;
}
else
TickleManager()->UnregisterClient(this);
m_criticalSection.Enter();
if (m_displaySurface)
delete m_displaySurface;
if (m_region)
delete m_region;
if (m_videoParam.GetPalette())
delete m_videoParam.GetPalette();
if (m_unk60) {
if (m_pDirectDraw)
m_pDirectDraw->Release();
if (m_pDDSurface)
m_pDDSurface->Release();
}
Init();
m_criticalSection.Leave();
if (!p_fromDestructor)
MxMediaManager::Destroy();
}
// OFFSET: LEGO1 0x100be440
void MxVideoManager::SortPresenterList()
{
@@ -89,6 +126,12 @@ void MxVideoManager::UpdateRegion()
// TODO
}
// OFFSET: LEGO1 0x100bea50
void MxVideoManager::Destroy()
{
Destroy(FALSE);
}
// OFFSET: LEGO1 0x100bea60 STUB
void MxVideoManager::InvalidateRect(MxRect32 &p_rect)
{