From ecb776f88efdc7df6d0493ce97ab44528704272f Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 6 Oct 2015 18:18:13 +0200 Subject: [PATCH] player: make stop command actually stop The stop command didn't always stop. In this case, opening a HLS URL and then sending "stop" during loading would actually make it fallback to parsing it as a playlist, and then continued to play the playlist items. (This corner case makes several unfortunate factors come together to produce this really odd behavior.) Another issue is that the "stop" was not always explicitly set. This could be a problem when sending several commands at once. Only the "quit" command should have priority over the "stop" command, so this is still checked. --- player/command.c | 2 +- player/loadfile.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/player/command.c b/player/command.c index 87f4061fe6..fff34fad5b 100644 --- a/player/command.c +++ b/player/command.c @@ -4588,7 +4588,7 @@ int run_command(struct MPContext *mpctx, struct mp_cmd *cmd, struct mpv_node *re case MP_CMD_STOP: playlist_clear(mpctx->playlist); - if (!mpctx->stop_play) + if (mpctx->stop_play != PT_QUIT) mpctx->stop_play = PT_STOP; break; diff --git a/player/loadfile.c b/player/loadfile.c index 40f35472e7..c472cad344 100644 --- a/player/loadfile.c +++ b/player/loadfile.c @@ -1097,7 +1097,7 @@ reopen_file: } open_demux_reentrant(mpctx); - if (!mpctx->master_demuxer) + if (!mpctx->master_demuxer || mpctx->stop_play) goto terminate_playback; mpctx->demuxer = mpctx->master_demuxer;