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,23 +735,22 @@ 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];
|
|
||||||
|
|
||||||
if(song->type == SONG_TYPE_URL &&
|
song = playlist.songs[playlist.order[playlist.current]];
|
||||||
0 == strcmp(song->utf8url,
|
|
||||||
songPlayer->utf8url))
|
if(song->type == SONG_TYPE_URL &&
|
||||||
{
|
0 == strcmp(song->utf8url, songPlayer->utf8url) &&
|
||||||
if(song->tag) freeMpdTag(song->tag);
|
!mpdTagsAreEqual(song->tag, songPlayer->tag))
|
||||||
song->tag = mpdTagDup(songPlayer->tag);
|
{
|
||||||
incrPlaylistVersion();
|
if(song->tag) freeMpdTag(song->tag);
|
||||||
}
|
song->tag = mpdTagDup(songPlayer->tag);
|
||||||
|
incrPlaylistVersion();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
24
src/tag.c
24
src/tag.c
@ -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;
|
||||||
|
}
|
||||||
|
@ -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: */
|
||||||
|
Loading…
Reference in New Issue
Block a user