summaryrefslogtreecommitdiffstats
path: root/mplayer.c
diff options
context:
space:
mode:
Diffstat (limited to 'mplayer.c')
-rw-r--r--mplayer.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/mplayer.c b/mplayer.c
index cf94ad048f..3b2da3bd39 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -1935,6 +1935,7 @@ static int fill_audio_out_buffers(struct MPContext *mpctx)
current_module="play_audio";
while (1) {
+ int sleep_time;
// all the current uses of ao_data.pts seem to be in aos that handle
// sync completely wrong; there should be no need to use ao_data.pts
// in get_space()
@@ -1946,7 +1947,9 @@ static int fill_audio_out_buffers(struct MPContext *mpctx)
// handle audio-only case:
// this is where mplayer sleeps during audio-only playback
// to avoid 100% CPU use
- usec_sleep(10000); // Wait a tick before retry
+ sleep_time = (ao_data.outburst - bytes_to_write) * 1000 / ao_data.samplerate;
+ if (sleep_time < 10) sleep_time = 10; // limit to 100 wakeups per second
+ usec_sleep(sleep_time * 1000);
}
while (bytes_to_write) {