summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/player.h3
-rw-r--r--src/player_mpd.c9
-rw-r--r--src/tui.c10
3 files changed, 18 insertions, 4 deletions
diff --git a/src/player.h b/src/player.h
index 94f361d..fdecbaf 100644
--- 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
index 71f78ef..c270fda 100644
--- 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
index 2ba8aad..d671659 100644
--- 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);