summaryrefslogtreecommitdiffstats
path: root/player/playloop.c
diff options
context:
space:
mode:
Diffstat (limited to 'player/playloop.c')
-rw-r--r--player/playloop.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/player/playloop.c b/player/playloop.c
index 02a9c64a03..bb0429e3b7 100644
--- a/player/playloop.c
+++ b/player/playloop.c
@@ -31,6 +31,7 @@
#include "common/recorder.h"
#include "common/stats.h"
#include "filters/f_decoder_wrapper.h"
+#include "filters/filter_internal.h"
#include "options/m_config_frontend.h"
#include "options/m_property.h"
#include "common/playlist.h"
@@ -161,13 +162,8 @@ void set_pause_state(struct MPContext *mpctx, bool user_pause)
if (internal_paused != mpctx->paused) {
mpctx->paused = internal_paused;
- if (mpctx->ao && mpctx->ao_chain) {
- if (internal_paused) {
- ao_pause(mpctx->ao);
- } else {
- ao_resume(mpctx->ao);
- }
- }
+ if (mpctx->ao && mpctx->ao_chain)
+ ao_set_paused(mpctx->ao, internal_paused);
if (mpctx->video_out)
vo_set_paused(mpctx->video_out, internal_paused);
@@ -956,8 +952,8 @@ static void handle_keep_open(struct MPContext *mpctx)
seek_to_last_frame(mpctx);
}
if (opts->keep_open_pause) {
- if (mpctx->ao)
- ao_drain(mpctx->ao);
+ if (mpctx->ao && ao_is_playing(mpctx->ao))
+ return;
set_pause_state(mpctx, true);
}
}
@@ -1122,10 +1118,7 @@ static void handle_playback_restart(struct MPContext *mpctx)
return;
}
- MP_DBG(mpctx, "starting audio playback\n");
- mpctx->audio_status = STATUS_PLAYING;
- fill_audio_out_buffers(mpctx); // actually play prepared buffer
- mp_wakeup_core(mpctx);
+ audio_start_ao(mpctx);
}
if (!mpctx->restart_complete) {