mirror of
https://github.com/isledecomp/isle.git
synced 2025-12-09 23:53:02 +00:00
MxSemphore + MxThread + MxThread implementions (#80)
* Add MxSemphore + MxThread and the two implementations I could find of MxThread (consumers extend it and override the Run method). * Implement a function in MxDiskStreamProvider which uses thread and semaphore to confirm correct layout / size of those classes. * All 100% match except two functions with a pair of registers swapped.
This commit is contained in:
@@ -1,5 +1,17 @@
|
||||
#include "mxdiskstreamprovider.h"
|
||||
|
||||
#include "mxthread.h"
|
||||
|
||||
// OFFSET: LEGO1 0x100d0f30
|
||||
MxResult MxDiskStreamProviderThread::Run()
|
||||
{
|
||||
if (m_target != NULL)
|
||||
m_target->WaitForWorkToComplete();
|
||||
MxThread::Run();
|
||||
// They should probably have writen "return MxThread::Run()" but they didn't.
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100d0f70
|
||||
MxDiskStreamProvider::MxDiskStreamProvider()
|
||||
{
|
||||
@@ -11,3 +23,22 @@ MxDiskStreamProvider::~MxDiskStreamProvider()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// Matching but with esi / edi swapped
|
||||
// OFFSET: LEGO1 0x100d1750
|
||||
MxResult MxDiskStreamProvider::WaitForWorkToComplete()
|
||||
{
|
||||
while (m_remainingWork != 0)
|
||||
{
|
||||
m_busySemaphore.Wait(INFINITE);
|
||||
if (m_unk1 != 0)
|
||||
PerformWork();
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100d1760 STUB
|
||||
void MxDiskStreamProvider::PerformWork()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
Reference in New Issue
Block a user