mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-19 17:49:14 +00:00
Merge pull request #2900 from jpark37/fix-posix-events
libobs/util: Fix POSIX event bugs
This commit is contained in:
commit
63cbcc5dcc
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue