[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);
bool ret = true;
bool ret = true;
int count = 0;
int res;
while(ret && atomic_load(&handle->count) == 0)
while(ret && (count = atomic_load(&handle->count)) == 0)
{
if (pthread_mutex_lock(&handle->mutex) != 0)
{
@ -132,7 +133,7 @@ bool lgWaitEventAbs(LGEvent * handle, struct timespec * ts)
}
if (ret && handle->autoReset)
atomic_fetch_sub(&handle->count, 1);
atomic_fetch_sub(&handle->count, count);
return ret;
}