Replace delay by deadline in timedwait()
The function sc_cond_timedwait() accepted a parameter representing the max duration to wait, because it internally uses SDL_CondWaitTimeout(). Instead, accept a deadline, to be consistent with pthread_cond_timedwait().
This commit is contained in:
@@ -123,12 +123,13 @@ sc_cond_wait(sc_cond *cond, sc_mutex *mutex) {
|
||||
}
|
||||
|
||||
bool
|
||||
sc_cond_timedwait(sc_cond *cond, sc_mutex *mutex, sc_tick delay) {
|
||||
if (delay < 0) {
|
||||
sc_cond_timedwait(sc_cond *cond, sc_mutex *mutex, sc_tick deadline) {
|
||||
sc_tick now = sc_tick_now();
|
||||
if (deadline <= now) {
|
||||
return false; // timeout
|
||||
}
|
||||
|
||||
uint32_t ms = SC_TICK_TO_MS(delay);
|
||||
uint32_t ms = SC_TICK_TO_MS(deadline - now);
|
||||
int r = SDL_CondWaitTimeout(cond->cond, mutex->mutex, ms);
|
||||
#ifndef NDEBUG
|
||||
if (r < 0) {
|
||||
|
||||
@@ -73,7 +73,7 @@ sc_cond_wait(sc_cond *cond, sc_mutex *mutex);
|
||||
|
||||
// return true on signaled, false on timeout
|
||||
bool
|
||||
sc_cond_timedwait(sc_cond *cond, sc_mutex *mutex, sc_tick ms);
|
||||
sc_cond_timedwait(sc_cond *cond, sc_mutex *mutex, sc_tick deadline);
|
||||
|
||||
void
|
||||
sc_cond_signal(sc_cond *cond);
|
||||
|
||||
Reference in New Issue
Block a user