From 8432eaefa07f3696f5d9825bf7d4e32d9b1c5308 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 31 Aug 2014 14:38:47 +0200 Subject: audio/out: prevent burning CPU when seeking while paused The audio/video sync code in player/audio.c calls ao_reset() each time audio decoding is entered, but the player is paused, and there would be more than 1 sample to skip to make audio start match with video start. This caused a wakeup feedback loop with push.c. CC: @mpv-player/stable --- audio/out/push.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/audio/out/push.c b/audio/out/push.c index 91b4a67571..95df7dfb56 100644 --- a/audio/out/push.c +++ b/audio/out/push.c @@ -319,7 +319,8 @@ static void *playthread(void *arg) // The most important part is that the decoder is woken up, so // that the decoder will wake up us in turn. MP_TRACE(ao, "buffer inactive.\n"); - mp_input_wakeup(ao->input_ctx); + if (!p->requested_data) + mp_input_wakeup(ao->input_ctx); pthread_cond_wait(&p->wakeup, &p->lock); } else { if (!ao->driver->wait || ao->driver->wait(ao, &p->lock) < 0) { -- cgit v1.2.3