Merge pull request #2900 from jpark37/fix-posix-events

libobs/util: Fix POSIX event bugs
This commit is contained in:
Jim 2020-05-09 16:00:27 -07:00 committed by GitHub
commit 63cbcc5dcc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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) {