summaryrefslogtreecommitdiffstats
path: root/player
diff options
context:
space:
mode:
Diffstat (limited to 'player')
-rw-r--r--player/audio.c5
-rw-r--r--player/command.c7
2 files changed, 6 insertions, 6 deletions
diff --git a/player/audio.c b/player/audio.c
index 8df6053da1..fb3f571cdf 100644
--- a/player/audio.c
+++ b/player/audio.c
@@ -434,6 +434,11 @@ static void do_fill_audio_out_buffers(struct MPContext *mpctx, double endpts)
struct MPOpts *opts = mpctx->opts;
struct dec_audio *d_audio = mpctx->d_audio;
+ if (mpctx->ao && ao_query_and_reset_events(mpctx->ao, AO_EVENT_RELOAD)) {
+ ao_reset(mpctx->ao);
+ uninit_audio_out(mpctx);
+ }
+
if (!d_audio)
return;
diff --git a/player/command.c b/player/command.c
index 7df0c8a6c3..1968e6d5e5 100644
--- a/player/command.c
+++ b/player/command.c
@@ -1462,12 +1462,7 @@ static void reload_audio_output(struct MPContext *mpctx)
{
if (!mpctx->ao)
return;
- ao_reset(mpctx->ao);
- uninit_audio_out(mpctx);
- // This normally recreates the AO, although there are situations when AO
- // creation is delayed; for example if there are no audio packets around,
- // and the audio format is yet unknown.
- reinit_audio_chain(mpctx);
+ ao_request_reload(mpctx->ao);
}
static int mp_property_audio_device(void *ctx, struct m_property *prop,