2023-07-07 14:00:48 -04:00
|
|
|
|
|
|
|
#include "mxsemaphore.h"
|
|
|
|
|
2023-12-25 13:32:01 -05:00
|
|
|
#include "decomp.h"
|
|
|
|
|
|
|
|
DECOMP_SIZE_ASSERT(MxSemaphore, 0x08)
|
|
|
|
|
2023-12-06 07:10:45 -05:00
|
|
|
// FUNCTION: LEGO1 0x100c87d0
|
2023-07-07 14:00:48 -04:00
|
|
|
MxSemaphore::MxSemaphore()
|
|
|
|
{
|
2023-10-24 19:38:27 -04:00
|
|
|
m_hSemaphore = NULL;
|
2023-07-07 14:00:48 -04:00
|
|
|
}
|
|
|
|
|
2023-12-06 07:10:45 -05:00
|
|
|
// FUNCTION: LEGO1 0x100c8800
|
2023-07-07 14:00:48 -04:00
|
|
|
MxResult MxSemaphore::Init(MxU32 p_initialCount, MxU32 p_maxCount)
|
|
|
|
{
|
2023-10-24 19:38:27 -04:00
|
|
|
MxResult result = FAILURE;
|
|
|
|
if (m_hSemaphore = CreateSemaphoreA(NULL, p_initialCount, p_maxCount, NULL))
|
|
|
|
result = SUCCESS;
|
|
|
|
return result;
|
2023-07-07 14:00:48 -04:00
|
|
|
}
|
|
|
|
|
2023-12-06 07:10:45 -05:00
|
|
|
// FUNCTION: LEGO1 0x100c8830
|
2023-07-07 14:00:48 -04:00
|
|
|
void MxSemaphore::Wait(MxU32 p_timeoutMS)
|
|
|
|
{
|
2023-10-24 19:38:27 -04:00
|
|
|
WaitForSingleObject(m_hSemaphore, p_timeoutMS);
|
2023-07-07 14:00:48 -04:00
|
|
|
}
|
|
|
|
|
2023-12-06 07:10:45 -05:00
|
|
|
// FUNCTION: LEGO1 0x100c8850
|
2023-07-07 14:00:48 -04:00
|
|
|
void MxSemaphore::Release(MxU32 p_releaseCount)
|
|
|
|
{
|
2023-10-24 19:38:27 -04:00
|
|
|
ReleaseSemaphore(m_hSemaphore, p_releaseCount, NULL);
|
2023-10-25 14:51:59 -04:00
|
|
|
}
|