implement misc presenter functions (#695)

* implement misc presenter functions

* style/spacing

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
Misha 2024-03-19 11:07:11 -04:00 committed by GitHub
parent fd1b371864
commit 277957f0d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 41 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,16 @@ 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,24 @@ 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 != NULL) {
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