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:
parent
decce92949
commit
199ad37e22
@ -735,24 +735,23 @@ int playPlaylist(FILE * fp, int song, int stopOnError) {
|
||||
}
|
||||
|
||||
void syncCurrentPlayerDecodeMetadata() {
|
||||
long i = 0;
|
||||
Song * songPlayer = playerCurrentDecodeSong();
|
||||
Song * song;
|
||||
|
||||
if(!songPlayer) return;
|
||||
|
||||
for(i=0; i<playlist.length; i++) {
|
||||
song = playlist.songs[i];
|
||||
if(playlist_state!=PLAYLIST_STATE_PLAY);
|
||||
|
||||
song = playlist.songs[playlist.order[playlist.current]];
|
||||
|
||||
if(song->type == SONG_TYPE_URL &&
|
||||
0 == strcmp(song->utf8url,
|
||||
songPlayer->utf8url))
|
||||
0 == strcmp(song->utf8url, songPlayer->utf8url) &&
|
||||
!mpdTagsAreEqual(song->tag, songPlayer->tag))
|
||||
{
|
||||
if(song->tag) freeMpdTag(song->tag);
|
||||
song->tag = mpdTagDup(songPlayer->tag);
|
||||
incrPlaylistVersion();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void syncPlayerAndPlaylist() {
|
||||
|
24
src/tag.c
24
src/tag.c
@ -184,4 +184,26 @@ MpdTag * mpdTagDup(MpdTag * tag) {
|
||||
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user