summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2022-12-18 02:05:58 +0100
committerLouis Burda <quent.burda@gmail.com>2022-12-18 02:06:18 +0100
commit28482cd5d05a8ccb7c98fd6cf54bf5d7d69aa6eb (patch)
tree70160707e2baec3ec581aa8b9b33ca652842e533 /src
parent33b966e7236912d06ff5033f69b69c687a7a7803 (diff)
downloadtmus-28482cd5d05a8ccb7c98fd6cf54bf5d7d69aa6eb.tar.gz
tmus-28482cd5d05a8ccb7c98fd6cf54bf5d7d69aa6eb.zip
player: move add_history to clear_track
Diffstat (limited to 'src')
-rw-r--r--src/player.c13
-rw-r--r--src/player_mplay.c20
2 files changed, 13 insertions, 20 deletions
diff --git a/src/player.c b/src/player.c
index 258a1b8..eb246c9 100644
--- a/src/player.c
+++ b/src/player.c
@@ -100,17 +100,10 @@ player_next_from_playlist(void)
void
player_add_history(struct track *new)
{
- struct link *link;
- struct track *track;
-
- link = list_back(&player.history);
- if (link) {
- track = UPCAST(link, struct track, link_hs);
- if (track == new) return;
+ if (!link_inuse(&new->link_hs)) {
+ link_pop(&new->link_hs);
+ list_push_back(&player.history, &new->link_hs);
}
-
- link_pop(&new->link_hs);
- list_push_back(&player.history, &new->link_hs);
}
/* implemented by backend:
diff --git a/src/player_mplay.c b/src/player_mplay.c
index d34ed59..73cd90a 100644
--- a/src/player_mplay.c
+++ b/src/player_mplay.c
@@ -90,7 +90,7 @@ mplay_run(struct track *track)
line = mplay_readline();
if (!line || strcmp(line, "+READY")) {
mplay_kill();
- PLAYER_STATUS(ERR, "mplay failed to start");
+ PLAYER_STATUS(ERR, "Failed to start");
return false;
}
@@ -179,7 +179,7 @@ player_update(void)
fprintf(mplay.stdin, "status\n");
line = mplay_readline();
if (!line || strncmp(line, "+STATUS:", 8)) {
- PLAYER_STATUS(ERR, "PLAYER: invalid response");
+ PLAYER_STATUS(ERR, "Bad response");
return;
}
@@ -202,16 +202,13 @@ int
player_play_track(struct track *track, bool new)
{
ASSERT(track != NULL);
+
player_clear_track();
if (!mplay_run(track))
return PLAYER_STATUS_ERR;
- /* add last track to history */
- if (player.track && !link_inuse(&player.track->link_hs))
- player_add_history(player.track);
-
- /* new invocations result in updated history pos */
+ /* new invocations are removed from history */
if (new) link_pop(&track->link_hs);
player.track = track;
@@ -224,6 +221,9 @@ player_play_track(struct track *track, bool new)
int
player_clear_track(void)
{
+ if (player.track)
+ player_add_history(player.track);
+
player.track = NULL;
mplay_kill();
@@ -238,7 +238,7 @@ player_toggle_pause(void)
fprintf(mplay.stdin, "pause\n");
line = mplay_readline();
if (!line || strncmp(line, "+PAUSE:", 7)) {
- PLAYER_STATUS(ERR, "PLAYER: invalid response");
+ PLAYER_STATUS(ERR, "Bad response");
return PLAYER_STATUS_ERR;
}
@@ -287,7 +287,7 @@ player_seek(int sec)
fprintf(mplay.stdin, "seek %i\n", sec);
line = mplay_readline();
if (!line || strncmp(line, "+SEEK:", 6)) {
- PLAYER_STATUS(ERR, "PLAYER: Bad response");
+ PLAYER_STATUS(ERR, "Bad response");
return PLAYER_STATUS_ERR;
}
@@ -312,7 +312,7 @@ player_set_volume(unsigned int vol)
fprintf(mplay.stdin, "vol %i\n", vol);
line = mplay_readline();
if (!line || strncmp(line, "+VOLUME:", 8)) {
- PLAYER_STATUS(ERR, "PLAYER: Bad response");
+ PLAYER_STATUS(ERR, "Bad response");
return PLAYER_STATUS_ERR;
}