commit fa85a8895cf8fb347f36801d7255a07662e1e09d
parent 5a77c503e7f9b19cbe6434167478151162b6c046
Author: Louis Burda <quent.burda@gmail.com>
Date: Mon, 28 Feb 2022 12:23:18 +0100
Display loaded player track name if player.track not known
Diffstat:
3 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/src/player.h b/src/player.h
@@ -40,6 +40,9 @@ struct player {
/* last used track */
struct track *track;
+ /* player track name (not necessarily from player.track) */
+ char *track_name;
+
/* player has a track is loaded (not necessarily player.track) */
bool loaded;
diff --git a/src/player_mpd.c b/src/player_mpd.c
@@ -230,6 +230,7 @@ player_init(void)
list_init(&player.queue);
player.track = NULL;
+ player.track_name = NULL;
player.loaded = 0;
player.autoplay = true;
@@ -251,7 +252,9 @@ player_deinit(void)
list_clear(&player.playlist);
list_clear(&player.queue);
list_clear(&player.history);
- if (player.status) free(player.status);
+
+ free(player.status);
+ free(player.track_name);
if (mpd.conn) mpd_connection_free(mpd.conn);
}
@@ -315,11 +318,15 @@ player_update(void)
current_song = mpd_run_current_song(mpd.conn);
if (current_song) {
+ player.track_name = strdup(mpd_song_get_uri(current_song));
+ OOM_CHECK(player.track_name);
player.loaded = true;
player.time_pos = mpd_status_get_elapsed_time(status);
player.time_end = mpd_song_get_duration(current_song);
mpd_song_free(current_song);
} else {
+ free(player.track_name);
+ player.track_name = NULL;
player.loaded = false;
player.time_pos = 0;
player.time_end = 0;
diff --git a/src/tui.c b/src/tui.c
@@ -56,7 +56,6 @@ static void tag_pane_vis(struct pane *pane, int sel);
static bool play_selected_track(void);
static bool seek_playing_track_tag(void);
static bool seek_playing_track(void);
-
static void delete_selected_track(void);
static bool track_pane_input(wint_t c);
@@ -763,9 +762,14 @@ cmd_pane_vis(struct pane *pane, int sel)
/* track name */
style_on(pane->win, STYLE_TITLE);
pane_clearln(pane, 0);
- if (player.loaded && player.track) {
+ if (player.loaded) {
strbuf_clear(&line);
- strbuf_append(&line, " %s", player.track->name);
+ if (player.track)
+ strbuf_append(&line, " %s", player.track->name);
+ else if (player.track_name)
+ strbuf_append(&line, " %s", player.track_name);
+ else
+ strbuf_append(&line, "<UNKNOWN>");
pane_writeln(pane, 0, line.buf);
}
style_off(pane->win, STYLE_TITLE);