Clear unknowns in MxCompositeMediaPresenter (#1716)

This commit is contained in:
Fabian Neundorf 2026-01-12 23:15:21 +01:00 committed by GitHub
parent ea61077c1b
commit c31b3dcdff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 12 additions and 12 deletions

View File

@ -32,8 +32,8 @@ class MxCompositeMediaPresenter : public MxCompositePresenter {
MxResult PutData() override; // vtable+0x4c MxResult PutData() override; // vtable+0x4c
private: private:
MxS16 m_unk0x4c; // 0x4c MxS16 m_remainingChildren; // 0x4c
MxBool m_unk0x4e; // 0x4e MxBool m_allChildrenStreaming; // 0x4e
}; };
// SYNTHETIC: LEGO1 0x10074000 // SYNTHETIC: LEGO1 0x10074000

View File

@ -15,8 +15,8 @@ DECOMP_SIZE_ASSERT(MxCompositeMediaPresenter, 0x50)
// FUNCTION: LEGO1 0x10073ea0 // FUNCTION: LEGO1 0x10073ea0
MxCompositeMediaPresenter::MxCompositeMediaPresenter() MxCompositeMediaPresenter::MxCompositeMediaPresenter()
{ {
m_unk0x4c = 0; m_remainingChildren = 0;
m_unk0x4e = FALSE; m_allChildrenStreaming = FALSE;
VideoManager()->RegisterPresenter(*this); VideoManager()->RegisterPresenter(*this);
} }
@ -99,25 +99,25 @@ void MxCompositeMediaPresenter::StartingTickle()
{ {
AUTOLOCK(m_criticalSection); AUTOLOCK(m_criticalSection);
if (!m_unk0x4e) { if (!m_allChildrenStreaming) {
for (MxCompositePresenterList::iterator it = m_list.begin(); it != m_list.end(); it++) { for (MxCompositePresenterList::iterator it = m_list.begin(); it != m_list.end(); it++) {
if ((*it)->GetCurrentTickleState() < e_streaming) { if ((*it)->GetCurrentTickleState() < e_streaming) {
(*it)->Tickle(); (*it)->Tickle();
if ((*it)->GetCurrentTickleState() == e_streaming || if ((*it)->GetCurrentTickleState() == e_streaming ||
((*it)->GetAction() && (*it)->GetAction()->GetStartTime())) { ((*it)->GetAction() && (*it)->GetAction()->GetStartTime())) {
m_unk0x4c++; m_remainingChildren++;
} }
} }
} }
if (m_list.size() == m_unk0x4c) { if (m_list.size() == m_remainingChildren) {
m_unk0x4e = TRUE; m_allChildrenStreaming = TRUE;
m_unk0x4c = 0; m_remainingChildren = 0;
for (MxCompositePresenterList::iterator it = m_list.begin(); it != m_list.end(); it++) { for (MxCompositePresenterList::iterator it = m_list.begin(); it != m_list.end(); it++) {
if (!(*it)->GetAction()->GetStartTime()) { if (!(*it)->GetAction()->GetStartTime()) {
m_unk0x4c++; m_remainingChildren++;
} }
} }
} }
@ -128,11 +128,11 @@ void MxCompositeMediaPresenter::StartingTickle()
!((*it)->GetAction()->GetFlags() & MxDSAction::c_bit9)) { !((*it)->GetAction()->GetFlags() & MxDSAction::c_bit9)) {
(*it)->Tickle(); (*it)->Tickle();
(*it)->GetAction()->SetFlags((*it)->GetAction()->GetFlags() | MxDSAction::c_bit9); (*it)->GetAction()->SetFlags((*it)->GetAction()->GetFlags() | MxDSAction::c_bit9);
m_unk0x4c--; m_remainingChildren--;
} }
} }
if (!m_unk0x4c) { if (!m_remainingChildren) {
ProgressTickleState(e_streaming); ProgressTickleState(e_streaming);
MxLong time = Timer()->GetTime(); MxLong time = Timer()->GetTime();
m_action->SetTimeStarted(time); m_action->SetTimeStarted(time);