[common] linux: stop event signals accumulating after they are serviced

This commit is contained in:
Geoffrey McRae 2021-01-08 01:18:02 +11:00
parent fb9cf6cfbc
commit f85b6418b8

View file

@ -87,10 +87,11 @@ bool lgWaitEventAbs(LGEvent * handle, struct timespec * ts)
{ {
assert(handle); assert(handle);
bool ret = true; bool ret = true;
int count = 0;
int res; int res;
while(ret && atomic_load(&handle->count) == 0) while(ret && (count = atomic_load(&handle->count)) == 0)
{ {
if (pthread_mutex_lock(&handle->mutex) != 0) if (pthread_mutex_lock(&handle->mutex) != 0)
{ {
@ -132,7 +133,7 @@ bool lgWaitEventAbs(LGEvent * handle, struct timespec * ts)
} }
if (ret && handle->autoReset) if (ret && handle->autoReset)
atomic_fetch_sub(&handle->count, 1); atomic_fetch_sub(&handle->count, count);
return ret; return ret;
} }