diff options
Diffstat (limited to 'source/api_wrappers/linux/CWaitableObjectCollection.cpp')
-rw-r--r-- | source/api_wrappers/linux/CWaitableObjectCollection.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/source/api_wrappers/linux/CWaitableObjectCollection.cpp b/source/api_wrappers/linux/CWaitableObjectCollection.cpp index e48fd1c..9b47bbc 100644 --- a/source/api_wrappers/linux/CWaitableObjectCollection.cpp +++ b/source/api_wrappers/linux/CWaitableObjectCollection.cpp @@ -9,6 +9,7 @@ #include "Types.h" #include "CWaitableObjectCollection.h" #include <assert.h> +#include <sys/time.h> CWaitableObjectCollection::CWaitableObjectCollection() { @@ -30,11 +31,9 @@ CWaitableObject *CWaitableObjectCollection::Wait(DWORD dwTimeout) vector<CWaitableObject *>::iterator it; DWORD dwTimePassed = 0; struct timespec ts; - struct timespec curr_time, start_time; + struct timeval curr_time, start_time; - if (-1 == clock_gettime(CLOCK_REALTIME, &start_time)) { - return NULL; - } + gettimeofday(&start_time, NULL); do { for (it = m_objs.begin(); it != m_objs.end(); ++it) { @@ -54,12 +53,10 @@ CWaitableObject *CWaitableObjectCollection::Wait(DWORD dwTimeout) // coverity[returned_null] while (-1 == nanosleep(&ts, &ts) && EINTR == errno); - if (-1 == clock_gettime(CLOCK_REALTIME, &curr_time)) { - return NULL; - } + gettimeofday(&curr_time, NULL); dwTimePassed = 1000 * (curr_time.tv_sec - start_time.tv_sec) + \ - (curr_time.tv_nsec - start_time.tv_nsec) / 1000000; + (curr_time.tv_usec - start_time.tv_usec) / 1000; } while (dwTimePassed < dwTimeout); |