more efficient of updating of metadata

git-svn-id: https://svn.musicpd.org/mpd/trunk@1277 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
Warren Dukes 2004-06-01 10:28:06 +00:00
parent decce92949
commit 199ad37e22
3 changed files with 35 additions and 12 deletions

View File

@ -735,25 +735,24 @@ int playPlaylist(FILE * fp, int song, int stopOnError) {
} }
void syncCurrentPlayerDecodeMetadata() { void syncCurrentPlayerDecodeMetadata() {
long i = 0;
Song * songPlayer = playerCurrentDecodeSong(); Song * songPlayer = playerCurrentDecodeSong();
Song * song; Song * song;
if(!songPlayer) return; if(!songPlayer) return;
for(i=0; i<playlist.length; i++) { if(playlist_state!=PLAYLIST_STATE_PLAY);
song = playlist.songs[i];
song = playlist.songs[playlist.order[playlist.current]];
if(song->type == SONG_TYPE_URL && if(song->type == SONG_TYPE_URL &&
0 == strcmp(song->utf8url, 0 == strcmp(song->utf8url, songPlayer->utf8url) &&
songPlayer->utf8url)) !mpdTagsAreEqual(song->tag, songPlayer->tag))
{ {
if(song->tag) freeMpdTag(song->tag); if(song->tag) freeMpdTag(song->tag);
song->tag = mpdTagDup(songPlayer->tag); song->tag = mpdTagDup(songPlayer->tag);
incrPlaylistVersion(); incrPlaylistVersion();
} }
} }
}
void syncPlayerAndPlaylist() { void syncPlayerAndPlaylist() {
if(playlist_state!=PLAYLIST_STATE_PLAY) return; if(playlist_state!=PLAYLIST_STATE_PLAY) return;

View File

@ -184,4 +184,26 @@ MpdTag * mpdTagDup(MpdTag * tag) {
return ret; return ret;
} }
/* vim:set shiftwidth=4 tabstop=8 expandtab: */
int mpdTagStringsAreEqual(char * s1, char * s2) {
if(s1 && s2) {
if(strcmp(s1, s2)) return 0;
}
else if(s1 || s2) return 0;
return 1;
}
int mpdTagsAreEqual(MpdTag * tag1, MpdTag * tag2) {
if(tag1 == NULL && tag2 == NULL) return 1;
else if(!tag1 || ! !tag2) return 0;
if(tag1->time != tag2->time) return 0;
if(!mpdTagStringsAreEqual(tag1->artist, tag2->artist)) return 0;
if(!mpdTagStringsAreEqual(tag1->album, tag2->album)) return 0;
if(!mpdTagStringsAreEqual(tag1->track, tag2->track)) return 0;
if(!mpdTagStringsAreEqual(tag1->title, tag2->title)) return 0;
return 1;
}

View File

@ -45,5 +45,7 @@ MpdTag * mpdTagDup(MpdTag * tag);
void validateUtf8Tag(MpdTag * tag); void validateUtf8Tag(MpdTag * tag);
int mpdTagsAreEqual(MpdTag * tag1, MpdTag * tag2);
#endif #endif
/* vim:set shiftwidth=4 tabstop=8 expandtab: */ /* vim:set shiftwidth=4 tabstop=8 expandtab: */