implement misc presenter functions

This commit is contained in:
Misha 2024-03-19 11:02:24 -04:00
parent 44bc575a2d
commit 4ef95a1fbe
No known key found for this signature in database
GPG Key ID: 8441D12AEF33FED8
3 changed files with 37 additions and 7 deletions

View File

@ -1,6 +1,8 @@
#include "legoloadcachesoundpresenter.h" #include "legoloadcachesoundpresenter.h"
#include "legocachsound.h" #include "legocachsound.h"
#include "legosoundmanager.h"
#include "misc.h"
#include "mxstreamchunk.h" #include "mxstreamchunk.h"
#include "mxwavepresenter.h" #include "mxwavepresenter.h"
@ -69,9 +71,14 @@ void LegoLoadCacheSoundPresenter::DoneTickle()
} }
} }
// STUB: LEGO1 0x10018700 // FUNCTION: LEGO1 0x10018700
MxResult LegoLoadCacheSoundPresenter::PutData() MxResult LegoLoadCacheSoundPresenter::PutData()
{ {
// TODO m_criticalSection.Enter();
if (m_currentTickleState == e_done) {
m_cacheSound = SoundManager()->GetUnknown0x40()->FUN_1003d290(m_cacheSound);
m_unk0x7c = 1;
}
m_criticalSection.Leave();
return SUCCESS; return SUCCESS;
} }

View File

@ -37,10 +37,22 @@ MxResult LegoPartPresenter::AddToManager()
return SUCCESS; return SUCCESS;
} }
// STUB: LEGO1 0x1007c9d0 // FUNCTION: LEGO1 0x1007c9d0
void LegoPartPresenter::Destroy(MxBool p_fromDestructor) void LegoPartPresenter::Destroy(MxBool p_fromDestructor)
{ {
// TODO m_criticalSection.Enter();
VideoManager()->UnregisterPresenter(*this);
if (m_parts) {
delete m_parts;
m_parts = NULL;
}
m_parts = NULL;
m_criticalSection.Leave();
if (!p_fromDestructor) {
MxMediaPresenter::Destroy(FALSE);
}
} }
// FUNCTION: LEGO1 0x1007ca30 // FUNCTION: LEGO1 0x1007ca30

View File

@ -114,11 +114,22 @@ MxResult LegoTexturePresenter::Store()
return SUCCESS; return SUCCESS;
} }
// STUB: LEGO1 0x1004fc60 // FUNCTION: LEGO1 0x1004fc60
MxResult LegoTexturePresenter::PutData() MxResult LegoTexturePresenter::PutData()
{ {
// TODO MxResult result = SUCCESS;
return FAILURE; if (MxPresenter::IsEnabled() && m_currentChunk) {
result = Read(*m_currentChunk);
if (result == SUCCESS) {
Store();
}
if (m_currentTickleState == e_streaming) {
m_subscriber->FreeDataChunk(m_currentChunk);
}
m_currentChunk = NULL;
}
return result;
} }
// FUNCTION: LEGO1 0x1004fcb0 // FUNCTION: LEGO1 0x1004fcb0