From 1d43fee5a1598bd5fd530a96493c2e58f3166314 Mon Sep 17 00:00:00 2001 From: jacob Date: Wed, 29 May 2024 17:16:43 -0500 Subject: [PATCH] fix cv using wrong handle --- src/sys_win32.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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); } /* ========================== *