From 80d853e44026995d088063852fae05d8a19e9192 Mon Sep 17 00:00:00 2001 From: Misha <106913236+MishaProductions@users.noreply.github.com> Date: Sun, 29 Oct 2023 09:25:44 -0400 Subject: [PATCH] MxDiskStreamController::Open --- LEGO1/mxdiskstreamcontroller.cpp | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/LEGO1/mxdiskstreamcontroller.cpp b/LEGO1/mxdiskstreamcontroller.cpp index 0bd3893e..95d6858c 100644 --- a/LEGO1/mxdiskstreamcontroller.cpp +++ b/LEGO1/mxdiskstreamcontroller.cpp @@ -1,5 +1,10 @@ #include "mxdiskstreamcontroller.h" +#include "mxautolocker.h" +#include "mxdiskstreamprovider.h" +#include "mxomni.h" +#include "mxticklemanager.h" + // OFFSET: LEGO1 0x100c7120 STUB MxDiskStreamController::MxDiskStreamController() { @@ -19,11 +24,30 @@ MxResult MxDiskStreamController::Tickle() return SUCCESS; } -// OFFSET: LEGO1 0x100c7790 STUB +// OFFSET: LEGO1 0x100c7790 MxResult MxDiskStreamController::Open(const char* p_filename) { - // TODO - return FAILURE; + MxAutoLocker lock(&this->m_criticalSection); + MxResult result = MxStreamController::Open(p_filename); + + if (result == SUCCESS) { + m_provider = new MxDiskStreamProvider(); + if (m_provider == NULL) { + result = FAILURE; + } + else { + result = m_provider->SetResourceToGet(this); + if (result != SUCCESS) { + delete m_provider; + m_provider = NULL; + } + else { + TickleManager()->RegisterClient(this, 10); + } + } + } + + return result; } // OFFSET: LEGO1 0x100c7880