From c258c25441d15d53932551b80a173f686e4b318d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 25 Jun 2014 04:06:42 +0200 Subject: [PATCH] MSVC 2003-equivalent function for SignalObjectAndWait --- thread.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/thread.c b/thread.c index 634a67975d..eafaf5413a 100644 --- a/thread.c +++ b/thread.c @@ -159,7 +159,12 @@ void scond_wait(scond_t *cond, slock_t *lock) { WaitForSingleObject(cond->event, 0); +#if MSC_VER <= 1310 + slock_unlock(lock); + WaitForSingleObject(cond->event, INFINITE); +#else SignalObjectAndWait(lock->lock, cond->event, INFINITE, FALSE); +#endif slock_lock(lock); } @@ -167,8 +172,12 @@ void scond_wait(scond_t *cond, slock_t *lock) bool scond_wait_timeout(scond_t *cond, slock_t *lock, int64_t timeout_us) { WaitForSingleObject(cond->event, 0); - +#if MSC_VER <= 1310 + slock_unlock(lock); + DWORD res = WaitForSingleObject(cond->event, (DWORD)(timeout_us) / 1000); +#else DWORD res = SignalObjectAndWait(lock->lock, cond->event, (DWORD)(timeout_us) / 1000, FALSE); +#endif slock_lock(lock); return res == WAIT_OBJECT_0;