summaryrefslogtreecommitdiffstats
path: root/mpvcore/command.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-09-04 16:08:36 +0200
committerwm4 <wm4@nowhere>2013-09-04 16:15:09 +0200
commit3bb217d5e9fda241693c7f3c6a4046c845d8d5a8 (patch)
treec9bc6582aefd62d4a1c31c300c527395c2da6a14 /mpvcore/command.c
parentb0f8e03f17c3dca88fa28265e88f7ec4c0d01d4d (diff)
downloadmpv-3bb217d5e9fda241693c7f3c6a4046c845d8d5a8.tar.bz2
mpv-3bb217d5e9fda241693c7f3c6a4046c845d8d5a8.tar.xz
mplayer: allow resuming from playlist
This includes the case of passing multiple files to command line (internally this is the same as loading a playlist). Resuming works by finding the first playlist entry that can be resumed. Alternative implementations would be possible, such as hashing the playlist contents. But this implementation is simpler, and doesn't have the disadvantage that changes to the playlist (like appending entries) will throw away the resume point. This makes loading large playlists a bit slower, because it has to look into ~/.mpv/watch_later/ for every entry. Loading a 15000 entries playlist now increases from 150ms to 400ms. Considering you rarely load playlists this big with mpv (because it's impractical considering the terminal and non-GUI nature of the player), this is probably ok.
Diffstat (limited to 'mpvcore/command.c')
-rw-r--r--mpvcore/command.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/mpvcore/command.c b/mpvcore/command.c
index 1a50504b8b..3834f4ed30 100644
--- a/mpvcore/command.c
+++ b/mpvcore/command.c
@@ -2332,8 +2332,10 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd)
playlist_transfer_entries(mpctx->playlist, pl);
talloc_free(pl);
- if (!append && mpctx->playlist->first)
- mp_set_playlist_entry(mpctx, mpctx->playlist->first);
+ if (!append && mpctx->playlist->first) {
+ struct playlist_entry *e = mp_resume_playlist(mpctx->playlist);
+ mp_set_playlist_entry(mpctx, e ? e : mpctx->playlist->first);
+ }
} else {
mp_tmsg(MSGT_CPLAYER, MSGL_ERR,
"\nUnable to load playlist %s.\n", filename);