From 5ffa91d5fdf6d178f8f9ff14925bffd539cf4e8c Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Mon, 23 Dec 2024 11:06:45 -0700 Subject: [PATCH] Match `MxDiskStreamController::FUN_100c7db0` (#1265) * Match `MxDiskStreamController::FUN_100c7db0` * Modern compiler fix --- LEGO1/omni/include/mxdiskstreamcontroller.h | 5 ++++- LEGO1/omni/include/mxutilitylist.h | 3 +++ LEGO1/omni/src/stream/mxdiskstreamcontroller.cpp | 6 +++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/LEGO1/omni/include/mxdiskstreamcontroller.h b/LEGO1/omni/include/mxdiskstreamcontroller.h index d74ad211..d2950e49 100644 --- a/LEGO1/omni/include/mxdiskstreamcontroller.h +++ b/LEGO1/omni/include/mxdiskstreamcontroller.h @@ -92,6 +92,9 @@ private: // List::~List // TEMPLATE: LEGO1 0x100c7ef0 -// list::insert +// list >::insert + +// TEMPLATE: BETA10 0x10150e60 +// MxUtilityList::PushBack #endif // MXDISKSTREAMCONTROLLER_H diff --git a/LEGO1/omni/include/mxutilitylist.h b/LEGO1/omni/include/mxutilitylist.h index 92b7eba5..eec3958e 100644 --- a/LEGO1/omni/include/mxutilitylist.h +++ b/LEGO1/omni/include/mxutilitylist.h @@ -18,6 +18,9 @@ public: this->pop_front(); return TRUE; } + + // Note: does not take a reference + void PushBack(T p_obj) { this->push_back(p_obj); } }; #endif // MXUTILITYLIST_H diff --git a/LEGO1/omni/src/stream/mxdiskstreamcontroller.cpp b/LEGO1/omni/src/stream/mxdiskstreamcontroller.cpp index c1341877..3553ca05 100644 --- a/LEGO1/omni/src/stream/mxdiskstreamcontroller.cpp +++ b/LEGO1/omni/src/stream/mxdiskstreamcontroller.cpp @@ -248,27 +248,31 @@ MxResult MxDiskStreamController::FUN_100c7d10() } // FUNCTION: LEGO1 0x100c7db0 +// FUNCTION: BETA10 0x101551d0 MxDSStreamingAction* MxDiskStreamController::FUN_100c7db0() { AUTOLOCK(m_criticalSection); for (MxNextActionDataStartList::iterator it = m_nextActionList.begin(); it != m_nextActionList.end(); it++) { MxNextActionDataStart* data = *it; + for (MxDSObjectList::iterator it2 = m_list0x64.begin(); it2 != m_list0x64.end(); it2++) { MxDSStreamingAction* streamingAction = (MxDSStreamingAction*) *it2; + if (streamingAction->GetObjectId() == data->GetObjectId() && streamingAction->GetUnknown24() == data->GetUnknown24() && streamingAction->GetBufferOffset() == data->GetData()) { m_nextActionList.erase(it); data->SetData(m_provider->GetFileSize() + data->GetData()); - m_nextActionList.push_back(data); + m_nextActionList.PushBack(data); m_list0x64.erase(it2); return streamingAction; } } } + return NULL; }