summaryrefslogtreecommitdiffstats
path: root/stream
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-06-16 22:56:24 +0200
committerwm4 <wm4@nowhere>2013-06-16 23:29:32 +0200
commitc412f7daf6f4bc31aa727dbafc8b379bd265604c (patch)
tree360be5cfc1f70b80cf8465b453ba5e967b3cbbb9 /stream
parentfa30dc415419a6a22d31f79095e0a0d41bc61905 (diff)
downloadmpv-c412f7daf6f4bc31aa727dbafc8b379bd265604c.tar.bz2
mpv-c412f7daf6f4bc31aa727dbafc8b379bd265604c.tar.xz
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.
Diffstat (limited to 'stream')
-rw-r--r--stream/cache.c7
1 files changed, 7 insertions, 0 deletions
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) {