From 9af41d7542ba05ef8aecd8a47086c3ee257a6c53 Mon Sep 17 00:00:00 2001 From: vspader Date: Mon, 3 Mar 2008 03:26:19 +0000 Subject: [PATCH] A few taglib fixes. Reads id3v2 before ape for mp3 files. Added AutoReleasePool to backgrounded method. --- Frameworks/TagLib/taglib/taglib/fileref.h | 2 +- .../TagLib/taglib/taglib/mpeg/mpegfile.cpp | 42 +++++++++---------- Playlist/PlaylistLoader.m | 8 +++- Plugins/TagLib/TagLibMetadataReader.m | 20 +++++++-- 4 files changed, 44 insertions(+), 28 deletions(-) diff --git a/Frameworks/TagLib/taglib/taglib/fileref.h b/Frameworks/TagLib/taglib/taglib/fileref.h index 60db14258..27067fdcf 100755 --- a/Frameworks/TagLib/taglib/taglib/fileref.h +++ b/Frameworks/TagLib/taglib/taglib/fileref.h @@ -22,7 +22,7 @@ #ifndef TAGLIB_FILEREF_H #define TAGLIB_FILEREF_H -#include +#include "tstringlist.h" #include "taglib_export.h" #include "audioproperties.h" diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/mpegfile.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/mpegfile.cpp index 5f886bbbc..9c5df7be1 100755 --- a/Frameworks/TagLib/taglib/taglib/mpeg/mpegfile.cpp +++ b/Frameworks/TagLib/taglib/taglib/mpeg/mpegfile.cpp @@ -44,12 +44,12 @@ namespace TagLib { virtual String title() const { - if (file->APETag() && !file->APETag()->title().isEmpty()) - return file->APETag()->title(); - if(file->ID3v2Tag() && !file->ID3v2Tag()->title().isEmpty()) return file->ID3v2Tag()->title(); + if (file->APETag() && !file->APETag()->title().isEmpty()) + return file->APETag()->title(); + if(file->ID3v1Tag()) return file->ID3v1Tag()->title(); @@ -58,12 +58,12 @@ namespace TagLib { virtual String artist() const { - if (file->APETag() && !file->APETag()->artist().isEmpty()) - return file->APETag()->artist(); - if(file->ID3v2Tag() && !file->ID3v2Tag()->artist().isEmpty()) return file->ID3v2Tag()->artist(); + if (file->APETag() && !file->APETag()->artist().isEmpty()) + return file->APETag()->artist(); + if(file->ID3v1Tag()) return file->ID3v1Tag()->artist(); @@ -72,12 +72,12 @@ namespace TagLib { virtual String album() const { - if (file->APETag() && !file->APETag()->album().isEmpty()) - return file->APETag()->album(); - if(file->ID3v2Tag() && !file->ID3v2Tag()->album().isEmpty()) return file->ID3v2Tag()->album(); + if (file->APETag() && !file->APETag()->album().isEmpty()) + return file->APETag()->album(); + if(file->ID3v1Tag()) return file->ID3v1Tag()->album(); @@ -86,12 +86,12 @@ namespace TagLib { virtual String comment() const { - if (file->APETag() && !file->APETag()->comment().isEmpty()) - return file->APETag()->comment(); - if(file->ID3v2Tag() && !file->ID3v2Tag()->comment().isEmpty()) return file->ID3v2Tag()->comment(); + if (file->APETag() && !file->APETag()->comment().isEmpty()) + return file->APETag()->comment(); + if(file->ID3v1Tag()) return file->ID3v1Tag()->comment(); @@ -100,12 +100,12 @@ namespace TagLib { virtual String genre() const { - if (file->APETag() && !file->APETag()->genre().isEmpty()) - return file->APETag()->genre(); - if(file->ID3v2Tag() && !file->ID3v2Tag()->genre().isEmpty()) return file->ID3v2Tag()->genre(); + if (file->APETag() && !file->APETag()->genre().isEmpty()) + return file->APETag()->genre(); + if(file->ID3v1Tag()) return file->ID3v1Tag()->genre(); @@ -114,12 +114,12 @@ namespace TagLib { virtual uint year() const { - if (file->APETag() && !file->APETag()->year() > 0) - return file->APETag()->year(); - if(file->ID3v2Tag() && file->ID3v2Tag()->year() > 0) return file->ID3v2Tag()->year(); + if (file->APETag() && !file->APETag()->year() > 0) + return file->APETag()->year(); + if(file->ID3v1Tag()) return file->ID3v1Tag()->year(); @@ -128,12 +128,12 @@ namespace TagLib { virtual uint track() const { - if (file->APETag() && !file->APETag()->track() > 0) - return file->APETag()->track(); - if(file->ID3v2Tag() && file->ID3v2Tag()->track() > 0) return file->ID3v2Tag()->track(); + if (file->APETag() && !file->APETag()->track() > 0) + return file->APETag()->track(); + if(file->ID3v1Tag()) return file->ID3v1Tag()->track(); diff --git a/Playlist/PlaylistLoader.m b/Playlist/PlaylistLoader.m index eec7d8685..b3682ba81 100755 --- a/Playlist/PlaylistLoader.m +++ b/Playlist/PlaylistLoader.m @@ -272,6 +272,8 @@ - (void)loadInfoForEntries:(NSArray *)entries { + NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init]; + NSOperationQueue *queue; queue = [[[NSApplication sharedApplication] delegate] sharedOperationQueue]; @@ -279,10 +281,10 @@ for (PlaylistEntry *pe in entries) { NSInvocationOperation *readEntryInfoOperation; - readEntryInfoOperation = [[[NSInvocationOperation alloc] + readEntryInfoOperation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(readEntryInfo:) - object:pe]autorelease]; + object:pe]; if (oldReadEntryInfoOperation) { [readEntryInfoOperation addDependency:oldReadEntryInfoOperation]; @@ -294,12 +296,14 @@ context:NULL]; [queue addOperation:readEntryInfoOperation]; oldReadEntryInfoOperation = [readEntryInfoOperation retain]; + [readEntryInfoOperation release]; } [oldReadEntryInfoOperation release]; [queue waitUntilAllOperationsAreFinished]; [playlistController performSelectorOnMainThread:@selector(updateTotalTime) withObject:nil waitUntilDone:NO]; + [pool release]; } - (NSDictionary *)readEntryInfo:(PlaylistEntry *)pe diff --git a/Plugins/TagLib/TagLibMetadataReader.m b/Plugins/TagLib/TagLibMetadataReader.m index c03ebaf58..5118f622f 100644 --- a/Plugins/TagLib/TagLibMetadataReader.m +++ b/Plugins/TagLib/TagLibMetadataReader.m @@ -35,13 +35,25 @@ lYear = tag->year(); lTrack = tag->track(); - lArtist = [NSString stringWithUTF8String:pArtist.toCString(true)]; + if (!pArtist.isNull()) + lArtist = [NSString stringWithUTF8String:pArtist.toCString(true)]; + else + lArtist = @""; - lAlbum = [NSString stringWithUTF8String:pAlbum.toCString(true)]; + if (!pAlbum.isNull()) + lAlbum = [NSString stringWithUTF8String:pAlbum.toCString(true)]; + else + lAlbum = @""; - lTitle = [NSString stringWithUTF8String:pTitle.toCString(true)]; + if (!pTitle.isNull()) + lTitle = [NSString stringWithUTF8String:pTitle.toCString(true)]; + else + lTitle = @""; - lGenre = [NSString stringWithUTF8String:pGenre.toCString(true)]; + if (!pGenre.isNull()) + lGenre = [NSString stringWithUTF8String:pGenre.toCString(true)]; + else + lGenre = @""; } }