aboutsummaryrefslogtreecommitdiffstats
path: root/src/player.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/player.c')
-rw-r--r--src/player.c26
1 files changed, 7 insertions, 19 deletions
diff --git a/src/player.c b/src/player.c
index 587a5501d..e6da9aeb9 100644
--- a/src/player.c
+++ b/src/player.c
@@ -55,9 +55,6 @@ static void resetPlayerMetadata() {
if(pc->metadataState == PLAYER_METADATA_STATE_READ) {
pc->metadataState = PLAYER_METADATA_STATE_WRITE;
- pc->title = -1;
- pc->artist = -1;
- pc->album = -1;
}
}
@@ -75,8 +72,6 @@ void resetPlayer() {
getPlayerData()->playerControl.seek = 0;
getPlayerData()->playerControl.metadataState =
PLAYER_METADATA_STATE_WRITE;
- getPlayerData()->playerControl.title = -1;
- /* kill decode process if it got left running */
pid = getPlayerData()->playerControl.decode_pid;
if(pid>0) kill(pid,SIGTERM);
getPlayerData()->playerControl.decode_pid = 0;
@@ -474,31 +469,24 @@ void playerCycleLogFiles() {
/* this actually creates a dupe of the current metadata */
Song * playerCurrentDecodeSong() {
static Song * song = NULL;
- static char * prev = NULL;
+ static MetadataChunk * prev = NULL;
PlayerControl * pc = &(getPlayerData()->playerControl);
if(pc->metadataState == PLAYER_METADATA_STATE_READ &&
((!song || strcmp(song->utf8url, pc->currentUrl))
- || (!prev || strcmp(prev,pc->metadata))))
+ || (!prev || memcmp(prev, &(pc->metadataChunk),
+ sizeof(MetadataChunk)))))
{
+ printf("metadata in the PLAYER!\n");
if(song) freeJustSong(song);
song = newNullSong();
- song->tag = newMpdTag();
if(song->utf8url) free(song->utf8url);
song->utf8url = strdup(pc->currentUrl);
- if(pc->title >= 0) {
- song->tag->title = strdup(pc->title + pc->metadata);
- /*printf("player title: %s\n", song->tag->title);*/
- }
- if(pc->artist >= 0) {
- song->tag->artist = strdup(pc->artist + pc->metadata);
- }
- if(pc->album >= 0) {
- song->tag->album = strdup(pc->album + pc->metadata);
- }
+ song->tag = metadataChunkToMpdTagDup(&(pc->metadataChunk));
validateUtf8Tag(song->tag);
if(prev) free(prev);
- prev = strdup(pc->metadata);
+ prev = malloc(sizeof(MetadataChunk));
+ memcpy(prev, &(pc->metadataChunk), sizeof(MetadataChunk));
resetPlayerMetadata();
return song;
}