diff --git a/src/sys_win32.c b/src/sys_win32.c index d8db7314..88929f6a 100644 --- a/src/sys_win32.c +++ b/src/sys_win32.c @@ -1518,7 +1518,8 @@ void sys_condition_variable_wait(struct sys_condition_variable *cv, struct sys_m atomic_i64_inc_eval(&cv->num_waiters); mutex->owner_tid = 0; #endif - SleepConditionVariableSRW((PCONDITION_VARIABLE)cv->handle, (SRWLOCK *)&mutex->handle, INFINITE, 0); + struct win32_condition_variable *w32cv = (struct win32_condition_variable *)cv->handle; + SleepConditionVariableSRW(&w32cv->condition_variable, (SRWLOCK *)&mutex->handle, INFINITE, 0); #if RTC mutex->owner_tid = (u64)GetCurrentThreadId(); atomic_i64_dec_eval(&cv->num_waiters); @@ -1532,8 +1533,9 @@ void sys_condition_variable_wait_time(struct sys_condition_variable *cv, struct atomic_i64_inc_eval(&cv->num_waiters); mutex->owner_tid = 0; #endif + struct win32_condition_variable *w32cv = (struct win32_condition_variable *)cv->handle; u32 ms = (u32)math_round_to_int((f32)seconds * 1000.f); - SleepConditionVariableSRW((PCONDITION_VARIABLE)cv->handle, (SRWLOCK *)&mutex->handle, ms, 0); + SleepConditionVariableSRW(&w32cv->condition_variable, (SRWLOCK *)&mutex->handle, ms, 0); #if RTC mutex->owner_tid = (u64)GetCurrentThreadId(); atomic_i64_dec_eval(&cv->num_waiters); @@ -1543,13 +1545,15 @@ void sys_condition_variable_wait_time(struct sys_condition_variable *cv, struct void sys_condition_variable_signal(struct sys_condition_variable *cv) { __prof; - WakeConditionVariable((PCONDITION_VARIABLE)cv->handle); + struct win32_condition_variable *w32cv = (struct win32_condition_variable *)cv->handle; + WakeConditionVariable(&w32cv->condition_variable); } void sys_condition_variable_broadcast(struct sys_condition_variable *cv) { __prof; - WakeAllConditionVariable((PCONDITION_VARIABLE)cv->handle); + struct win32_condition_variable *w32cv = (struct win32_condition_variable *)cv->handle; + WakeAllConditionVariable(&w32cv->condition_variable); } /* ========================== *