From 2fb40fe728ac07574808c40034fc0f3d2254d49d Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 23 Feb 2011 09:09:48 +0100 Subject: [PATCH] playlist_state: add option "restore_paused" When set, MPD will not auto-start playback on startup; it will be in "paused" state. --- NEWS | 1 + doc/mpd.conf.5 | 3 +++ doc/mpdconf.example | 5 +++++ src/conf.c | 1 + src/playlist_state.c | 8 ++++++++ 5 files changed, 18 insertions(+) diff --git a/NEWS b/NEWS index 05ad1025b..a5bcb033b 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,7 @@ ver 0.17 (2011/??/??) - osx: allow user to specify other audio devices - raop: new output plugin - shout: add possibility to set url +* state_file: add option "restore_paused" ver 0.16.1 (2011/01/09) diff --git a/doc/mpd.conf.5 b/doc/mpd.conf.5 index c75d4aad6..cb44468bf 100644 --- a/doc/mpd.conf.5 +++ b/doc/mpd.conf.5 @@ -69,6 +69,9 @@ mpd will be saved to this file when mpd is terminated by a TERM signal or by the "kill" command. When mpd is restarted, it will read the state file and restore the state of mpd (including the playlist). .TP +.B restore_paused +Put MPD into pause mode instead of starting playback after startup. +.TP .B user This specifies the user that MPD will run as, if set. MPD should never run as root, and you may use this option to make MPD change its diff --git a/doc/mpdconf.example b/doc/mpdconf.example index c31763ff0..1aa9cf1dc 100644 --- a/doc/mpdconf.example +++ b/doc/mpdconf.example @@ -103,6 +103,11 @@ # #gapless_mp3_playback "yes" # +# Setting "restore_paused" to "yes" puts MPD into pause mode instead +# of starting playback after startup. +# +#restore_paused "no" +# # This setting enables MPD to create playlists in a format usable by other # music players. # diff --git a/src/conf.c b/src/conf.c index c9657717a..419411648 100644 --- a/src/conf.c +++ b/src/conf.c @@ -59,6 +59,7 @@ static struct config_entry config_entries[] = { { .name = CONF_LOG_FILE, false, false }, { .name = CONF_PID_FILE, false, false }, { .name = CONF_STATE_FILE, false, false }, + { .name = "restore_paused", false, false }, { .name = CONF_USER, false, false }, { .name = CONF_GROUP, false, false }, { .name = CONF_BIND_TO_ADDRESS, true, false }, diff --git a/src/playlist_state.c b/src/playlist_state.c index 8f065e6cb..4aa2c2c92 100644 --- a/src/playlist_state.c +++ b/src/playlist_state.c @@ -29,6 +29,7 @@ #include "queue_save.h" #include "path.h" #include "text_file.h" +#include "conf.h" #include #include @@ -196,6 +197,13 @@ playlist_state_restore(const char *line, FILE *fp, GString *buffer, if (!queue_valid_position(&playlist->queue, current)) current = 0; + if (state == PLAYER_STATE_PLAY && + config_get_bool("restore_paused", false)) + /* the user doesn't want MPD to auto-start + playback after startup; fall back to + "pause" */ + state = PLAYER_STATE_PAUSE; + /* enable all devices for the first time; this must be called here, after the audio output states were restored, before playback begins */