fix cv using wrong handle

This commit is contained in:
jacob 2024-05-29 17:16:43 -05:00
parent a8ad54815e
commit 1d43fee5a1

View File

@ -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);
}
/* ========================== *