summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/man/input.rst2
-rw-r--r--input/cmd_list.c3
-rw-r--r--player/command.c4
3 files changed, 6 insertions, 3 deletions
diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst
index befa41b709..2ba463a875 100644
--- a/DOCS/man/input.rst
+++ b/DOCS/man/input.rst
@@ -193,6 +193,8 @@ List of Input Commands
Stop playback of the current file, and play the new file immediately.
<append>
Append the file to the playlist.
+ <append-play>
+ Append the file, and if nothing is currently playing, start playback.
The third argument is a list of options and values which should be set
while the file is playing. It is of the form ``opt1=value1,opt2=value2,..``.
diff --git a/input/cmd_list.c b/input/cmd_list.c
index 1096e83d63..6f763c4b64 100644
--- a/input/cmd_list.c
+++ b/input/cmd_list.c
@@ -111,7 +111,8 @@ const struct mp_cmd_def mp_cmds[] = {
{ MP_CMD_LOADFILE, "loadfile", {
ARG_STRING,
OARG_CHOICE(0, ({"replace", 0}, {"0", 0},
- {"append", 1}, {"1", 1})),
+ {"append", 1}, {"1", 1},
+ {"append-play", 2})),
OPT_KEYVALUELIST(ARG(str_list), MP_CMD_OPT_ARG),
}},
{ MP_CMD_LOADLIST, "loadlist", {
diff --git a/player/command.c b/player/command.c
index 952d348af9..7282eb30fd 100644
--- a/player/command.c
+++ b/player/command.c
@@ -3550,7 +3550,7 @@ int run_command(MPContext *mpctx, mp_cmd_t *cmd)
case MP_CMD_LOADFILE: {
char *filename = cmd->args[0].v.s;
- bool append = cmd->args[1].v.i;
+ int append = cmd->args[1].v.i;
if (!append)
playlist_clear(mpctx->playlist);
@@ -3565,7 +3565,7 @@ int run_command(MPContext *mpctx, mp_cmd_t *cmd)
}
playlist_add(mpctx->playlist, entry);
- if (!append)
+ if (!append || (append == 2 && !mpctx->playlist->current))
mp_set_playlist_entry(mpctx, mpctx->playlist->first);
break;
}