summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlessandro Ghedini <alessandro@ghedini.me>2014-07-24 19:30:24 +0200
committerwm4 <wm4@nowhere>2014-07-25 14:32:34 +0200
commit08415933db8ede1ec27cb43654bc6fffdbd6ad93 (patch)
treec2a90c140abe6393971f21d16e0ba81966e3fb8a
parent623eac2b1b5dc88b91949b2bd88284330d7425a2 (diff)
downloadmpv-08415933db8ede1ec27cb43654bc6fffdbd6ad93.tar.bz2
mpv-08415933db8ede1ec27cb43654bc6fffdbd6ad93.tar.xz
command: append entries to the end of the playlist with loadlist append
Currently entries are added after the current playlist element. This is kinda confusing, more so given that "loadfile append" appends at the end of the playlist.
-rw-r--r--common/playlist.c9
-rw-r--r--common/playlist.h1
-rw-r--r--player/command.c2
3 files changed, 11 insertions, 1 deletions
diff --git a/common/playlist.c b/common/playlist.c
index e33fbd36c8..4df3396b04 100644
--- a/common/playlist.c
+++ b/common/playlist.c
@@ -215,6 +215,15 @@ void playlist_transfer_entries(struct playlist *pl, struct playlist *source_pl)
}
}
+void playlist_append_entries(struct playlist *pl, struct playlist *source_pl)
+{
+ while (source_pl->first) {
+ struct playlist_entry *e = source_pl->first;
+ playlist_unlink(source_pl, e);
+ playlist_add(pl, e);
+ }
+}
+
// Return number of entries between list start and e.
// Return -1 if e is not on the list, or if e is NULL.
int playlist_entry_to_index(struct playlist *pl, struct playlist_entry *e)
diff --git a/common/playlist.h b/common/playlist.h
index c55a3a21c8..73227f071c 100644
--- a/common/playlist.h
+++ b/common/playlist.h
@@ -74,6 +74,7 @@ void playlist_shuffle(struct playlist *pl);
struct playlist_entry *playlist_get_next(struct playlist *pl, int direction);
void playlist_add_base_path(struct playlist *pl, bstr base_path);
void playlist_transfer_entries(struct playlist *pl, struct playlist *source_pl);
+void playlist_append_entries(struct playlist *pl, struct playlist *source_pl);
int playlist_entry_to_index(struct playlist *pl, struct playlist_entry *e);
int playlist_entry_count(struct playlist *pl);
diff --git a/player/command.c b/player/command.c
index 5e446265ae..2bcb4bcd0c 100644
--- a/player/command.c
+++ b/player/command.c
@@ -3624,7 +3624,7 @@ int run_command(MPContext *mpctx, mp_cmd_t *cmd)
if (pl) {
if (!append)
playlist_clear(mpctx->playlist);
- playlist_transfer_entries(mpctx->playlist, pl);
+ playlist_append_entries(mpctx->playlist, pl);
talloc_free(pl);
if (!append && mpctx->playlist->first) {