From a641f562f3aab2de95555c3c33133341d0f274b7 Mon Sep 17 00:00:00 2001 From: Christopher Zimmerman Date: Fri, 26 Jun 2009 09:26:12 +0200 Subject: 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. --- src/playlist_state.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src') 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); -- cgit v1.2.3