summaryrefslogtreecommitdiff
path: root/src/ui.c
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2011-02-26 14:44:52 +0100
committerLars-Dominik Braun <lars@6xq.net>2011-02-26 14:44:52 +0100
commitc225eea4edfb8cf8ede845cc6f9b7e858aabe6e8 (patch)
treeca4a3ed13d1e31a211a997641e50cac79cb6df21 /src/ui.c
parenta79a0c3fb812efac3370c6ed73d37bb8fd1d318e (diff)
downloadpianobar-windows-c225eea4edfb8cf8ede845cc6f9b7e858aabe6e8.tar.gz
pianobar-windows-c225eea4edfb8cf8ede845cc6f9b7e858aabe6e8.tar.bz2
pianobar-windows-c225eea4edfb8cf8ede845cc6f9b7e858aabe6e8.zip
Always add song to history
Diffstat (limited to 'src/ui.c')
-rw-r--r--src/ui.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/ui.c b/src/ui.c
index 0e8f80b..cd0b7d2 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -694,3 +694,33 @@ void BarUiStartEventCmd (const BarSettings_t *settings, const char *type,
waitpid (chld, &status, 0);
}
}
+
+/* prepend song to history, must not be a list of songs as ->next is modified!
+ */
+void BarUiHistoryPrepend (BarApp_t *app, PianoSong_t *song) {
+ if (app->settings.history != 0) {
+ PianoSong_t *tmpSong;
+
+ song->next = app->songHistory;
+ app->songHistory = song;
+
+ /* limit history's length */
+ /* start with 1, so we're stopping at n-1 and have the
+ * chance to set ->next = NULL */
+ unsigned int i = 1;
+ tmpSong = app->songHistory;
+ while (i < app->settings.history && tmpSong != NULL) {
+ tmpSong = tmpSong->next;
+ ++i;
+ }
+ /* if too many songs in history... */
+ if (tmpSong != NULL) {
+ PianoSong_t *delSong = tmpSong->next;
+ tmpSong->next = NULL;
+ if (delSong != NULL) {
+ PianoDestroyPlaylist (delSong);
+ }
+ }
+ }
+}
+