aboutsummaryrefslogtreecommitdiffstats
path: root/src/playlist_state.c
diff options
context:
space:
mode:
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);
+}