diff options
author | Christopher Zimmerman <madroach@zakweb.de> | 2009-06-26 09:26:12 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-06-26 09:26:12 +0200 |
commit | a641f562f3aab2de95555c3c33133341d0f274b7 (patch) | |
tree | 2817b3db830bcb3180cac58a2675d4043da4739f | |
parent | fe96bdf7e6d4705788565149b618759234d4339a (diff) | |
download | mpd-a641f562f3aab2de95555c3c33133341d0f274b7.tar.gz mpd-a641f562f3aab2de95555c3c33133341d0f274b7.tar.xz mpd-a641f562f3aab2de95555c3c33133341d0f274b7.zip |
playlist_state: save state when stopped
At the moment mpd doesn't store or restore the current track to/from
its state file when the daemon is stopped/started while in 'stopped'
state. I believe the preferred behaviour would be to store and
restore the current track even when the daemon is in stopped state
when shutting down.
I made a small patch to adapt this behaviour. If you believe this is
not the preferred behaviour, maybe this should be realized as a
configuration option. I'm not sure how to do this, but made a small
comment, where one would have to put the option.
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | src/playlist_state.c | 14 |
2 files changed, 10 insertions, 5 deletions
@@ -6,6 +6,7 @@ ver 0.16 (20??/??/??) * commands: - added new "status" line with more precise "elapsed time" * log unused/unknown block parameters +* save state when stopped ver 0.15 (2009/06/23) diff --git a/src/playlist_state.c b/src/playlist_state.c index af0f7982b..9530b7d36 100644 --- a/src/playlist_state.c +++ b/src/playlist_state.c @@ -66,8 +66,12 @@ playlist_state_save(FILE *fp, const struct playlist *playlist) playlist->current)); fprintf(fp, "%s%i\n", PLAYLIST_STATE_FILE_TIME, getPlayerElapsedTime()); - } else + } else { fprintf(fp, "%s\n", PLAYLIST_STATE_FILE_STATE_STOP); + fprintf(fp, "%s%i\n", PLAYLIST_STATE_FILE_CURRENT, + queue_order_to_position(&playlist->queue, + playlist->current)); + } fprintf(fp, "%s%i\n", PLAYLIST_STATE_FILE_RANDOM, playlist->queue.random); @@ -172,19 +176,19 @@ playlist_state_restore(FILE *fp, struct playlist *playlist) (PLAYLIST_STATE_FILE_CURRENT)])); } else if (g_str_has_prefix(buffer, PLAYLIST_STATE_FILE_PLAYLIST_BEGIN)) { - if (state == PLAYER_STATE_STOP) - current = -1; playlist_state_load(fp, playlist, buffer); } } setPlaylistRandomStatus(playlist, random_mode); - if (state != PLAYER_STATE_STOP && !queue_is_empty(&playlist->queue)) { + if (!queue_is_empty(&playlist->queue)) { if (!queue_valid_position(&playlist->queue, current)) current = 0; - if (seek_time == 0) + if (state == PLAYER_STATE_STOP /* && config_option */) + playlist->current = current; + else if (seek_time == 0) playPlaylist(playlist, current); else seekSongInPlaylist(playlist, current, seek_time); |