summaryrefslogtreecommitdiffstats
path: root/osdep
diff options
context:
space:
mode:
authornplourde <nplourde@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-04-27 14:55:30 +0000
committernplourde <nplourde@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-04-27 14:55:30 +0000
commitd59bfa633d84ec3f14ad9ff00a827e2b612e6d28 (patch)
tree3d1938414dd9fe8384b768e574600fda9b4827ac /osdep
parentf9dfc7f46e55c8784611e0f552c15cc7a282e20b (diff)
downloadmpv-d59bfa633d84ec3f14ad9ff00a827e2b612e6d28.tar.bz2
mpv-d59bfa633d84ec3f14ad9ff00a827e2b612e6d28.tar.xz
use sleep_accurate darwin timer
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15276 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'osdep')
-rw-r--r--osdep/timer-darwin.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/osdep/timer-darwin.c b/osdep/timer-darwin.c
index 1a9a6e9673..b9b537954b 100644
--- a/osdep/timer-darwin.c
+++ b/osdep/timer-darwin.c
@@ -34,10 +34,20 @@ const char *timer_name = "Darwin accurate";
+/* the core sleep function, uses floats and is used in MPlayer G2 */
+float sleep_accurate(float time_frame)
+{
+ uint64_t deadline = time_frame / timebase_ratio + mach_absolute_time();
+
+ mach_wait_until(deadline);
+
+ return (mach_absolute_time() - deadline) * timebase_ratio;
+}
+
/* wrapper for MPlayer G1 */
int usec_sleep(int usec_delay)
{
- return usleep(usec_delay);
+ return sleep_accurate(usec_delay / 1e6) * 1e6;
}