aboutsummaryrefslogtreecommitdiffstats
path: root/src/playlist_state.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-10-08 15:22:39 +0200
committerMax Kellermann <max@duempel.org>2009-10-08 15:22:39 +0200
commitecb118f1edab572a904890eddafd3b11c0a79a79 (patch)
tree4e273cd64778fcff80250b3b33ffb050a257c981 /src/playlist_state.c
parent1e663b186998ffdeef9b3b9775558e9378bad342 (diff)
downloadmpd-ecb118f1edab572a904890eddafd3b11c0a79a79.tar.gz
mpd-ecb118f1edab572a904890eddafd3b11c0a79a79.tar.xz
mpd-ecb118f1edab572a904890eddafd3b11c0a79a79.zip
state_file: save only if something has changed
If nothing has changed since the last save, don't save the state file. Saving will spin up the hard drive, which is undesirable on hosts where MPD is idling in background.
Diffstat (limited to 'src/playlist_state.c')
-rw-r--r--src/playlist_state.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/playlist_state.c b/src/playlist_state.c
index f288a5738..5d18cc339 100644
--- a/src/playlist_state.c
+++ b/src/playlist_state.c
@@ -200,3 +200,21 @@ playlist_state_restore(const char *line, FILE *fp, struct playlist *playlist)
return true;
}
+
+unsigned
+playlist_state_get_hash(const struct playlist *playlist)
+{
+ return playlist->queue.version ^
+ (getPlayerElapsedTime() << 8) ^
+ (playlist->current >= 0
+ ? (queue_order_to_position(&playlist->queue,
+ playlist->current) << 16)
+ : 0) ^
+ ((int)getPlayerCrossFade() << 20) ^
+ (getPlayerState() << 24) ^
+ (playlist->queue.random << 27) ^
+ (playlist->queue.repeat << 28) ^
+ (playlist->queue.single << 29) ^
+ (playlist->queue.consume << 30) ^
+ (playlist->queue.random << 31);
+}