Match some list functions in MxStreamController to BETA10 (#1273)

This commit is contained in:
Christian Semmler
2024-12-24 14:42:20 -07:00
committed by GitHub
parent c2c9c75f1a
commit 0f338a882b
3 changed files with 30 additions and 6 deletions

View File

@@ -138,4 +138,10 @@ protected:
// TEMPLATE: LEGO1 0x100c1bc0 // TEMPLATE: LEGO1 0x100c1bc0
// list<MxDSObject *,allocator<MxDSObject *> >::insert // list<MxDSObject *,allocator<MxDSObject *> >::insert
// TEMPLATE: BETA10 0x10150b90
// MxUtilityList<MxDSSubscriber *>::PushBack
// TEMPLATE: BETA10 0x10150cf0
// MxUtilityList<MxDSSubscriber *>::Remove
#endif // MXSTREAMCONTROLLER_H #endif // MXSTREAMCONTROLLER_H

View File

@@ -21,6 +21,7 @@ public:
// Note: does not take a reference // Note: does not take a reference
void PushBack(T p_obj) { this->push_back(p_obj); } void PushBack(T p_obj) { this->push_back(p_obj); }
void Remove(T p_obj) { this->remove(p_obj); }
}; };
#endif // MXUTILITYLIST_H #endif // MXUTILITYLIST_H

View File

@@ -72,20 +72,22 @@ MxResult MxStreamController::Open(const char* p_filename)
AUTOLOCK(m_criticalSection); AUTOLOCK(m_criticalSection);
MakeSourceName(sourceName, p_filename); MakeSourceName(sourceName, p_filename);
this->m_atom = MxAtomId(sourceName, e_lowerCase2); m_atom = MxAtomId(sourceName, e_lowerCase2);
return SUCCESS; return SUCCESS;
} }
// FUNCTION: LEGO1 0x100c15d0 // FUNCTION: LEGO1 0x100c15d0
// FUNCTION: BETA10 0x1014e730
void MxStreamController::AddSubscriber(MxDSSubscriber* p_subscriber) void MxStreamController::AddSubscriber(MxDSSubscriber* p_subscriber)
{ {
m_subscriberList.push_back(p_subscriber); m_subscriberList.PushBack(p_subscriber);
} }
// FUNCTION: LEGO1 0x100c1620 // FUNCTION: LEGO1 0x100c1620
// FUNCTION: BETA10 0x1014e7b4
void MxStreamController::RemoveSubscriber(MxDSSubscriber* p_subscriber) void MxStreamController::RemoveSubscriber(MxDSSubscriber* p_subscriber)
{ {
m_subscriberList.remove(p_subscriber); m_subscriberList.Remove(p_subscriber);
} }
// FUNCTION: LEGO1 0x100c1690 // FUNCTION: LEGO1 0x100c1690
@@ -114,11 +116,13 @@ MxResult MxStreamController::VTable0x20(MxDSAction* p_action)
} }
// FUNCTION: LEGO1 0x100c1740 // FUNCTION: LEGO1 0x100c1740
// FUNCTION: BETA10 0x1014e922
MxResult MxStreamController::VTable0x24(MxDSAction* p_action) MxResult MxStreamController::VTable0x24(MxDSAction* p_action)
{ {
AUTOLOCK(m_criticalSection); AUTOLOCK(m_criticalSection);
VTable0x30(p_action); VTable0x30(p_action);
m_action0x60 = (MxDSAction*) m_unk0x54.FindAndErase(p_action); m_action0x60 = (MxDSAction*) m_unk0x54.FindAndErase(p_action);
if (m_action0x60 == NULL) { if (m_action0x60 == NULL) {
return FAILURE; return FAILURE;
} }
@@ -130,6 +134,7 @@ MxResult MxStreamController::VTable0x24(MxDSAction* p_action)
} }
// FUNCTION: LEGO1 0x100c1800 // FUNCTION: LEGO1 0x100c1800
// FUNCTION: BETA10 0x1014ea36
MxResult MxStreamController::FUN_100c1800(MxDSAction* p_action, MxU32 p_val) MxResult MxStreamController::FUN_100c1800(MxDSAction* p_action, MxU32 p_val)
{ {
MxNextActionDataStart* dataActionStart = MxNextActionDataStart* dataActionStart =
@@ -138,11 +143,12 @@ MxResult MxStreamController::FUN_100c1800(MxDSAction* p_action, MxU32 p_val)
return FAILURE; return FAILURE;
} }
m_nextActionList.push_back(dataActionStart); m_nextActionList.PushBack(dataActionStart);
return SUCCESS; return SUCCESS;
} }
// FUNCTION: LEGO1 0x100c1a00 // FUNCTION: LEGO1 0x100c1a00
// FUNCTION: BETA10 0x1014eb04
MxResult MxStreamController::FUN_100c1a00(MxDSAction* p_action, MxU32 p_offset) MxResult MxStreamController::FUN_100c1a00(MxDSAction* p_action, MxU32 p_offset)
{ {
if (p_action->GetUnknown24() == -1) { if (p_action->GetUnknown24() == -1) {
@@ -198,36 +204,43 @@ MxResult MxStreamController::FUN_100c1a00(MxDSAction* p_action, MxU32 p_offset)
MxLong time = Timer()->GetTime(); MxLong time = Timer()->GetTime();
streamingAction->SetUnknown90(time); streamingAction->SetUnknown90(time);
m_unk0x3c.push_back(streamingAction); m_unk0x3c.PushBack(streamingAction);
return SUCCESS; return SUCCESS;
} }
// FUNCTION: LEGO1 0x100c1c10 // FUNCTION: LEGO1 0x100c1c10
// FUNCTION: BETA10 0x1014ed8c
MxResult MxStreamController::VTable0x2c(MxDSAction* p_action, MxU32 p_bufferval) MxResult MxStreamController::VTable0x2c(MxDSAction* p_action, MxU32 p_bufferval)
{ {
AUTOLOCK(m_criticalSection); AUTOLOCK(m_criticalSection);
if (FUN_100c1a00(p_action, p_bufferval) != SUCCESS) { if (FUN_100c1a00(p_action, p_bufferval) != SUCCESS) {
return FAILURE; return FAILURE;
} }
return FUN_100c1800(p_action, (p_bufferval / m_provider->GetFileSize()) * m_provider->GetFileSize()); return FUN_100c1800(p_action, (p_bufferval / m_provider->GetFileSize()) * m_provider->GetFileSize());
} }
// FUNCTION: LEGO1 0x100c1ce0 // FUNCTION: LEGO1 0x100c1ce0
// FUNCTION: BETA10 0x1014eeb5
MxResult MxStreamController::VTable0x30(MxDSAction* p_action) MxResult MxStreamController::VTable0x30(MxDSAction* p_action)
{ {
AUTOLOCK(m_criticalSection); AUTOLOCK(m_criticalSection);
MxResult result = FAILURE; MxResult result = FAILURE;
MxDSObject* action = m_unk0x3c.FindAndErase(p_action); MxDSObject* action = m_unk0x3c.FindAndErase(p_action);
if (action != NULL) { if (action != NULL) {
MxNextActionDataStart* data = m_nextActionList.FindAndErase(action->GetObjectId(), action->GetUnknown24()); MxNextActionDataStart* data = m_nextActionList.FindAndErase(action->GetObjectId(), action->GetUnknown24());
delete action; delete action;
delete data; delete data;
result = SUCCESS; result = SUCCESS;
} }
return result; return result;
} }
// FUNCTION: LEGO1 0x100c1da0 // FUNCTION: LEGO1 0x100c1da0
// FUNCTION: BETA10 0x1014efdc
MxResult MxStreamController::InsertActionToList54(MxDSAction* p_action) MxResult MxStreamController::InsertActionToList54(MxDSAction* p_action)
{ {
AUTOLOCK(m_criticalSection); AUTOLOCK(m_criticalSection);
@@ -237,16 +250,18 @@ MxResult MxStreamController::InsertActionToList54(MxDSAction* p_action)
return FAILURE; return FAILURE;
} }
else { else {
m_unk0x54.push_back(action); m_unk0x54.PushBack(action);
return SUCCESS; return SUCCESS;
} }
} }
// FUNCTION: LEGO1 0x100c1e70 // FUNCTION: LEGO1 0x100c1e70
// FUNCTION: BETA10 0x1014f0a1
MxPresenter* MxStreamController::FUN_100c1e70(MxDSAction& p_action) MxPresenter* MxStreamController::FUN_100c1e70(MxDSAction& p_action)
{ {
AUTOLOCK(m_criticalSection); AUTOLOCK(m_criticalSection);
MxPresenter* result = NULL; MxPresenter* result = NULL;
if (p_action.GetObjectId() != -1) { if (p_action.GetObjectId() != -1) {
MxDSObject* action = m_unk0x3c.Find(&p_action); MxDSObject* action = m_unk0x3c.Find(&p_action);
if (action != NULL) { if (action != NULL) {
@@ -258,6 +273,7 @@ MxPresenter* MxStreamController::FUN_100c1e70(MxDSAction& p_action)
} }
// FUNCTION: LEGO1 0x100c1f00 // FUNCTION: LEGO1 0x100c1f00
// FUNCTION: BETA10 0x1014f162
MxResult MxStreamController::FUN_100c1f00(MxDSAction* p_action) MxResult MxStreamController::FUN_100c1f00(MxDSAction* p_action)
{ {
AUTOLOCK(m_criticalSection); AUTOLOCK(m_criticalSection);
@@ -292,6 +308,7 @@ MxResult MxStreamController::FUN_100c1f00(MxDSAction* p_action)
} }
// FUNCTION: LEGO1 0x100c20b0 // FUNCTION: LEGO1 0x100c20b0
// FUNCTION: BETA10 0x1014f37d
MxNextActionDataStart* MxStreamController::FindNextActionDataStartFromStreamingAction(MxDSStreamingAction* p_action) MxNextActionDataStart* MxStreamController::FindNextActionDataStartFromStreamingAction(MxDSStreamingAction* p_action)
{ {
return m_nextActionList.Find(p_action->GetObjectId(), p_action->GetUnknown24()); return m_nextActionList.Find(p_action->GetObjectId(), p_action->GetUnknown24());