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
private:
MxS16 m_unk0x4c; // 0x4c
MxBool m_unk0x4e; // 0x4e
MxS16 m_remainingChildren; // 0x4c
MxBool m_allChildrenStreaming; // 0x4e
};
// SYNTHETIC: LEGO1 0x10074000

View File

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