From c412f7daf6f4bc31aa727dbafc8b379bd265604c Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 16 Jun 2013 22:56:24 +0200 Subject: cache: fix build on OSX (again) OSX doesn't support the POSIX API we were using. We check for _POSIX_TIMERS. 0 or -1 means unsupported. See: http://pubs.opengroup.org/onlinepubs/009696699/functions/clock_getres.html http://pubs.opengroup.org/onlinepubs/009696699/basedefs/unistd.h.html The workaround of using gettimeofday() is suggested by Apple: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/pthread_cond_timedwait.3.html Thanks to AStorm for providing help here. --- stream/cache.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'stream/cache.c') diff --git a/stream/cache.c b/stream/cache.c index 5a34447701..1981cb58be 100644 --- a/stream/cache.c +++ b/stream/cache.c @@ -131,7 +131,14 @@ static int cond_timed_wait(pthread_cond_t *cond, pthread_mutex_t *mutex, double timeout) { struct timespec ts; +#if _POSIX_TIMERS > 0 clock_gettime(CLOCK_REALTIME, &ts); +#else + struct timeval tv; + gettimeofday(&tv, NULL); + ts.tv_sec = tv.tv_sec; + ts.tv_nsec = tv.tv_usec * 1000UL; +#endif unsigned long seconds = (int)timeout; unsigned long nsecs = (timeout - seconds) * 1000000000UL; if (nsecs + ts.tv_nsec >= 1000000000UL) { -- cgit v1.2.3