fix cv using wrong handle
This commit is contained in:
parent
a8ad54815e
commit
1d43fee5a1
@ -1518,7 +1518,8 @@ void sys_condition_variable_wait(struct sys_condition_variable *cv, struct sys_m
|
|||||||
atomic_i64_inc_eval(&cv->num_waiters);
|
atomic_i64_inc_eval(&cv->num_waiters);
|
||||||
mutex->owner_tid = 0;
|
mutex->owner_tid = 0;
|
||||||
#endif
|
#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
|
#if RTC
|
||||||
mutex->owner_tid = (u64)GetCurrentThreadId();
|
mutex->owner_tid = (u64)GetCurrentThreadId();
|
||||||
atomic_i64_dec_eval(&cv->num_waiters);
|
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);
|
atomic_i64_inc_eval(&cv->num_waiters);
|
||||||
mutex->owner_tid = 0;
|
mutex->owner_tid = 0;
|
||||||
#endif
|
#endif
|
||||||
|
struct win32_condition_variable *w32cv = (struct win32_condition_variable *)cv->handle;
|
||||||
u32 ms = (u32)math_round_to_int((f32)seconds * 1000.f);
|
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
|
#if RTC
|
||||||
mutex->owner_tid = (u64)GetCurrentThreadId();
|
mutex->owner_tid = (u64)GetCurrentThreadId();
|
||||||
atomic_i64_dec_eval(&cv->num_waiters);
|
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)
|
void sys_condition_variable_signal(struct sys_condition_variable *cv)
|
||||||
{
|
{
|
||||||
__prof;
|
__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)
|
void sys_condition_variable_broadcast(struct sys_condition_variable *cv)
|
||||||
{
|
{
|
||||||
__prof;
|
__prof;
|
||||||
WakeAllConditionVariable((PCONDITION_VARIABLE)cv->handle);
|
struct win32_condition_variable *w32cv = (struct win32_condition_variable *)cv->handle;
|
||||||
|
WakeAllConditionVariable(&w32cv->condition_variable);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ========================== *
|
/* ========================== *
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user