#include "Internal.h" #include "Codemap.h" #include CgeCondition *CgeConditionNew(int *result) { CgeCondition *condition; if ((condition = malloc(sizeof(CgeCondition)))) { InitializeConditionVariable(&condition->handle); } return condition; } void CgeConditionFree(CgeCondition *condition) { free(condition); } int CgeConditionWait(CgeCondition *condition, CgeMutex *mutex, int *result) { return CgeConditionWaitFor(condition, mutex, INFINITE, result); } int CgeConditionWaitFor(CgeCondition *condition, CgeMutex *mutex, uint32_t timeout, int *result) { if (SleepConditionVariableCS(&condition->handle, &mutex->handle, timeout)) return 1; if (result) *result = errorToErrorCode(GetLastError()); return 0; } int CgeConditionSignal(CgeCondition *condition, int *result) { (void)result; WakeConditionVariable(&condition->handle); return 1; } int CgeConditionBroadcast(CgeCondition *condition, int *result) { (void)result; WakeAllConditionVariable(&condition->handle); return 1; }