|
@@ -77,15 +77,19 @@ int os_event_wait(os_event_t *event)
|
|
|
{
|
|
|
int code = 0;
|
|
|
pthread_mutex_lock(&event->mutex);
|
|
|
- if (!event->signalled)
|
|
|
+ while (!event->signalled) {
|
|
|
code = pthread_cond_wait(&event->cond, &event->mutex);
|
|
|
+ if (code != 0)
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
if (code == 0) {
|
|
|
if (!event->manual)
|
|
|
event->signalled = false;
|
|
|
- pthread_mutex_unlock(&event->mutex);
|
|
|
}
|
|
|
|
|
|
+ pthread_mutex_unlock(&event->mutex);
|
|
|
+
|
|
|
return code;
|
|
|
}
|
|
|
|
|
@@ -103,7 +107,7 @@ int os_event_timedwait(os_event_t *event, unsigned long milliseconds)
|
|
|
{
|
|
|
int code = 0;
|
|
|
pthread_mutex_lock(&event->mutex);
|
|
|
- if (!event->signalled) {
|
|
|
+ while (!event->signalled) {
|
|
|
struct timespec ts;
|
|
|
#if defined(__APPLE__) || defined(__MINGW32__)
|
|
|
struct timeval tv;
|
|
@@ -115,6 +119,8 @@ int os_event_timedwait(os_event_t *event, unsigned long milliseconds)
|
|
|
#endif
|
|
|
add_ms_to_ts(&ts, milliseconds);
|
|
|
code = pthread_cond_timedwait(&event->cond, &event->mutex, &ts);
|
|
|
+ if (code != 0)
|
|
|
+ break;
|
|
|
}
|
|
|
|
|
|
if (code == 0) {
|