aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder_thread.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-04-13 19:25:53 +0200
committerMax Kellermann <max@duempel.org>2009-04-13 19:25:53 +0200
commit200be2637171a52fce9f23a858dc1c4476fcb7a3 (patch)
treeb5217a3087d5657e0a50930bcf9941785be1268b /src/decoder_thread.c
parent99a88988d57d5da5888eb1b82479a8600be6df2f (diff)
downloadmpd-200be2637171a52fce9f23a858dc1c4476fcb7a3.tar.gz
mpd-200be2637171a52fce9f23a858dc1c4476fcb7a3.tar.xz
mpd-200be2637171a52fce9f23a858dc1c4476fcb7a3.zip
decoder_api: submit the song tag to the music pipe
When a new song starts playing, send its tag (song->tag) to the music pipe. This allows output plugins to render tags for all songs, not only those with embedded tags understood by the decoder plugin.
Diffstat (limited to 'src/decoder_thread.c')
-rw-r--r--src/decoder_thread.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/decoder_thread.c b/src/decoder_thread.c
index dee16218a..c649f3a34 100644
--- a/src/decoder_thread.c
+++ b/src/decoder_thread.c
@@ -95,6 +95,8 @@ static void decoder_run_song(const struct song *song, const char *uri)
}
decoder.seeking = false;
+ decoder.song_tag = song->tag != NULL && song_is_file(song)
+ ? tag_dup(song->tag) : NULL;
decoder.stream_tag = NULL;
decoder.decoder_tag = NULL;
decoder.chunk = NULL;
@@ -201,6 +203,9 @@ static void decoder_run_song(const struct song *song, const char *uri)
if (close_instream)
input_stream_close(&input_stream);
+ if (decoder.song_tag != NULL)
+ tag_free(decoder.song_tag);
+
if (decoder.stream_tag != NULL)
tag_free(decoder.stream_tag);