Changeset 10092
- Timestamp:
- 07/23/08 19:26:51 (4 months ago)
- Location:
- trunk
- Files:
-
- 14 added
- 11 removed
- 34 modified
-
app/content/bindings/browser/sbTabBrowser.xml (modified) (1 diff)
-
app/content/bindings/playlist.xml (modified) (1 diff)
-
app/content/bindings/ratingsControl.xml (modified) (1 diff)
-
app/content/scripts/asyncWebPlaylist.js (modified) (3 diffs)
-
app/content/scripts/playerOpen.js (modified) (3 diffs)
-
app/content/scripts/trackEditor.js (modified) (1 diff)
-
components/contenthandling/media/sbMediaContentListener.js (modified) (2 diffs)
-
components/devicesobsolete/download/src/DownloadDevice.cpp (modified) (4 diffs)
-
components/devicesobsolete/download/src/DownloadDevice.h (modified) (1 diff)
-
components/devicesobsolete/download/src/Makefile.in (modified) (1 diff)
-
components/jscodelib/DropHelper.jsm (modified) (1 diff)
-
components/library/localdatabase/public/sbILocalDatabaseLibrary.idl (modified) (1 diff)
-
components/library/localdatabase/src/sbLocalDatabaseDynamicPlaylist.js (modified) (1 diff)
-
components/library/localdatabase/src/sbLocalDatabaseLibrary.cpp (modified) (1 diff)
-
components/library/localdatabase/src/sbLocalDatabaseMediaListBase.h (modified) (2 diffs)
-
components/mediacore/metadata/handler/taglib/src/MetadataHandlerTaglib.cpp (modified) (19 diffs)
-
components/mediacore/metadata/handler/taglib/src/SeekableChannel.cpp (modified) (1 diff)
-
components/mediacore/metadata/handler/wma/src/MetadataHandlerWMA.cpp (modified) (1 diff)
-
components/mediacore/metadata/manager/public/Makefile.in (modified) (2 diffs)
-
components/mediacore/metadata/manager/public/sbIFileMetadataService.idl (added)
-
components/mediacore/metadata/manager/public/sbIMetadataHandler.idl (modified) (2 diffs)
-
components/mediacore/metadata/manager/public/sbIMetadataJob.idl (deleted)
-
components/mediacore/metadata/manager/public/sbIMetadataJobManager.idl (deleted)
-
components/mediacore/metadata/manager/public/sbIMetadataUtils.idl (deleted)
-
components/mediacore/metadata/manager/public/sbPIMetadataJob.idl (deleted)
-
components/mediacore/metadata/manager/src/Makefile.in (modified) (3 diffs)
-
components/mediacore/metadata/manager/src/MetadataJob.cpp (deleted)
-
components/mediacore/metadata/manager/src/MetadataJob.h (deleted)
-
components/mediacore/metadata/manager/src/MetadataJobManager.cpp (deleted)
-
components/mediacore/metadata/manager/src/MetadataJobManager.h (deleted)
-
components/mediacore/metadata/manager/src/MetadataManagerComponent.cpp (deleted)
-
components/mediacore/metadata/manager/src/sbBackgroundThreadMetadataProcessor.cpp (added)
-
components/mediacore/metadata/manager/src/sbBackgroundThreadMetadataProcessor.h (added)
-
components/mediacore/metadata/manager/src/sbFileMetadataService.cpp (added)
-
components/mediacore/metadata/manager/src/sbFileMetadataService.h (added)
-
components/mediacore/metadata/manager/src/sbMainThreadMetadataProcessor.cpp (added)
-
components/mediacore/metadata/manager/src/sbMainThreadMetadataProcessor.h (added)
-
components/mediacore/metadata/manager/src/sbMetadataCrashTracker.cpp (added)
-
components/mediacore/metadata/manager/src/sbMetadataCrashTracker.h (added)
-
components/mediacore/metadata/manager/src/sbMetadataJob.cpp (added)
-
components/mediacore/metadata/manager/src/sbMetadataJob.h (added)
-
components/mediacore/metadata/manager/src/sbMetadataJobItem.cpp (added)
-
components/mediacore/metadata/manager/src/sbMetadataJobItem.h (added)
-
components/mediacore/metadata/manager/src/sbMetadataModule.cpp (added)
-
components/mediacore/metadata/manager/src/sbMetadataUtils.cpp (deleted)
-
components/mediacore/metadata/manager/src/sbMetadataUtils.h (deleted)
-
components/mediacore/metadata/manager/test/test_bug7406.js (modified) (3 diffs)
-
components/mediacore/metadata/manager/test/test_metadata_artwork.js (modified) (4 diffs)
-
components/mediacore/metadata/manager/test/test_metadatahandler.js (modified) (3 diffs)
-
components/mediacore/metadata/manager/test/test_metadatajob_errorcases.js (modified) (5 diffs)
-
components/mediacore/metadata/manager/test/test_metadatajob_pref.js (modified) (3 diffs)
-
components/mediacore/metadata/manager/test/test_metadatajob_reading.js (modified) (3 diffs)
-
components/mediacore/metadata/manager/test/test_metadatajob_writing.js (modified) (4 diffs)
-
components/mediacore/metadata/manager/test/test_performance.js (modified) (3 diffs)
-
components/mediaimport/directory/src/sbDirectoryImportService.js (modified) (9 diffs)
-
components/mediaimport/filescan/src/sbFileScan.cpp (modified) (1 diff)
-
components/remoteapi/src/sbRemoteLibraryBase.cpp (modified) (6 diffs)
-
components/remoteapi/src/sbRemoteLibraryBase.h (modified) (2 diffs)
-
locales/en-US/songbird/songbird.properties (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/app/content/bindings/browser/sbTabBrowser.xml
r10008 r10092 827 827 828 828 // Send the items in the new media list to the metadata scanner 829 var metadata JobManager =830 Components.classes["@songbirdnest.com/Songbird/ MetadataJobManager;1"]831 .getService(Components.interfaces.sbI MetadataJobManager);832 var metadataJob = metadataJobManager.newJob(array, 5);829 var metadataService = 830 Components.classes["@songbirdnest.com/Songbird/FileMetadataService;1"] 831 .getService(Components.interfaces.sbIFileMetadataService); 832 metadataService.read(array); 833 833 834 834 // Start playback -
trunk/app/content/bindings/playlist.xml
r10033 r10092 2979 2979 .createInstance(Ci.nsIMutableArray); 2980 2980 mediaItemArray.appendElement(aItem, false); 2981 var manager = Cc["@songbirdnest.com/Songbird/MetadataJobManager;1"] 2982 .getService(Ci.sbIMetadataJobManager); 2983 var job = manager.newJob(mediaItemArray, 2984 5, // Sleep time on thread 2985 Ci.sbIMetadataJob.JOBTYPE_WRITE); 2986 SBJobUtils.showProgressDialog(job, null); 2981 var metadataService = Cc["@songbirdnest.com/Songbird/FileMetadataService;1"] 2982 .getService(Ci.sbIFileMetadataService); 2983 var job = metadataService.write(mediaItemArray); 2984 SBJobUtils.showProgressDialog(job, null); 2987 2985 }, 0); 2988 2986 ]]> -
trunk/app/content/bindings/ratingsControl.xml
r9875 r10092 359 359 360 360 mediaItemArray.appendElement(self._curMediaItem, false); 361 362 var manager = 363 Components.classes["@songbirdnest.com/Songbird/MetadataJobManager;1"] 364 .getService(Components.interfaces.sbIMetadataJobManager); 365 366 var job = manager.newJob(mediaItemArray, 5, // Sleep time on thread 367 Components.interfaces.sbIMetadataJob.JOBTYPE_WRITE); 361 362 var metadataService = 363 Components.classes["@songbirdnest.com/Songbird/FileMetadataService;1"] 364 .getService(Components.interfaces.sbIFileMetadataService); 365 var job = metadataService.write(mediaItemArray); 368 366 369 367 SBJobUtils.showProgressDialog(job, null); -
trunk/app/content/scripts/asyncWebPlaylist.js
r9603 r10092 88 88 { 89 89 const CONTRACTID_ARRAY = "@songbirdnest.com/moz/xpcom/threadsafe-array;1"; 90 const CONTRACTID_METADATAJOBMANAGER =91 "@songbirdnest.com/Songbird/MetadataJobManager;1";92 90 const CONTRACTID_FAVICONSERVICE = "@mozilla.org/browser/favicon-service;1"; 93 91 … … 95 93 const nsIMutableArray = Components.interfaces.nsIMutableArray; 96 94 const sbIMediaList = Components.interfaces.sbIMediaList; 97 const sbIMetadataJobManager = Components.interfaces.sbIMetadataJobManager;98 95 99 96 CancelAsyncWebDocument(old_href_loop, aMediaListView); … … 308 305 if (mediaItemsToScan && mediaItemsToScan.length) { 309 306 // Then submit the job 310 var metadataJobManager = 311 Components.classes[CONTRACTID_METADATAJOBMANAGER] 312 .getService(sbIMetadataJobManager); 313 var metadataJob = metadataJobManager.newJob(mediaItemsToScan, 5); 307 308 var metadataService = 309 Components.classes["@songbirdnest.com/Songbird/FileMetadataService;1"] 310 .getService(Components.interfaces.sbIFileMetadataService); 311 metadataService.read(mediaItemsToScan); 314 312 } 315 313 } -
trunk/app/content/scripts/playerOpen.js
r10076 r10092 315 315 array.appendElement(mediaList.getItemByIndex(i), false); 316 316 } 317 318 // Send the items in the new media list to the metadata scanner319 var metadataJobManager =320 Components.classes["@songbirdnest.com/Songbird/MetadataJobManager;1"]321 .getService(Components.interfaces.sbIMetadataJobManager);322 var metadataJob = metadataJobManager.newJob(array, 5);317 318 var metadataService = 319 Components.classes["@songbirdnest.com/Songbird/FileMetadataService;1"] 320 .getService(Components.interfaces.sbIFileMetadataService); 321 var metadataJob = metadataService.read(array); 322 323 323 324 324 // Give the new media list focus … … 1026 1026 } 1027 1027 1028 var metadataJobMgr = Components.classes["@songbirdnest.com/Songbird/MetadataJobManager;1"]1029 .getService(Components.interfaces.sbIMetadataJobManager);1030 1031 1028 var items = Components.classes["@songbirdnest.com/moz/xpcom/threadsafe-array;1"] 1032 1029 .createInstance(Components.interfaces.nsIMutableArray); 1033 1030 1034 1031 items.appendElement(mediaItem, false); 1035 metadataJobMgr.newJob(items, 5); 1032 1033 var metadataService = 1034 Components.classes["@songbirdnest.com/Songbird/FileMetadataService;1"] 1035 .getService(Components.interfaces.sbIFileMetadataService); 1036 var metadataJob = metadataService.read(items); 1036 1037 1037 1038 return mediaItem; … … 1074 1075 } 1075 1076 1076 var metadataJobMgr = Components.classes["@songbirdnest.com/Songbird/MetadataJobManager;1"]1077 .getService(Components.interfaces.sbIMetadataJobManager);1078 1079 1077 var items = Components.classes["@songbirdnest.com/moz/xpcom/threadsafe-array;1"] 1080 1078 .createInstance(Components.interfaces.nsIMutableArray); 1081 1079 1082 1080 items.appendElement(mediaItem, false); 1083 metadataJobMgr.newJob(items, 5); 1081 1082 var metadataService = 1083 Components.classes["@songbirdnest.com/Songbird/FileMetadataService;1"] 1084 .getService(Components.interfaces.sbIFileMetadataService); 1085 var metadataJob = metadataService.read(items); 1084 1086 1085 1087 return mediaItem; -
trunk/app/content/scripts/trackEditor.js
r9988 r10092 991 991 } 992 992 if (mediaItemArray.length > 0) { 993 var manager = Cc["@songbirdnest.com/Songbird/MetadataJobManager;1"] 994 .getService(Ci.sbIMetadataJobManager); 995 993 var metadataService = Cc["@songbirdnest.com/Songbird/FileMetadataService;1"] 994 .getService(Ci.sbIFileMetadataService); 996 995 try { 997 var job = m anager.newJob(mediaItemArray, 5, Ci.sbIMetadataJob.JOBTYPE_WRITE);996 var job = metadataService.write(mediaItemArray); 998 997 999 998 SBJobUtils.showProgressDialog(job, window); -
trunk/components/contenthandling/media/sbMediaContentListener.js
r9605 r10092 38 38 const CONTRACTID_ARRAY = "@songbirdnest.com/moz/xpcom/threadsafe-array;1"; 39 39 const CONTRACTID_LIBRARYMANAGER = "@songbirdnest.com/Songbird/library/Manager;1"; 40 const CONTRACTID_METADATAJOBMANAGER = "@songbirdnest.com/Songbird/MetadataJobManager;1";41 40 const CONTRACTID_OBSERVERSERVICE = "@mozilla.org/observer-service;1"; 42 41 const CONTRACTID_PLAYLISTPLAYBACK = "@songbirdnest.com/Songbird/PlaylistPlayback;1"; … … 120 119 var scanArray = Cc[CONTRACTID_ARRAY].createInstance(Ci.nsIMutableArray); 121 120 scanArray.appendElement(mediaItem, false); 122 123 var metadata JobManager = Cc[CONTRACTID_METADATAJOBMANAGER].124 getService(Ci.sbIMetadataJobManager);125 var metadataJob = metadataJobManager.newJob(scanArray, 5);121 122 var metadataService = Cc["@songbirdnest.com/Songbird/FileMetadataService;1"] 123 .getService(Ci.sbIFileMetadataService); 124 var job = metadataService.read(scanArray); 126 125 } 127 126 -
trunk/components/devicesobsolete/download/src/DownloadDevice.cpp
r9666 r10092 74 74 #include <sbILocalDatabasePropertyCache.h> 75 75 #include <sbILocalDatabaseLibrary.h> 76 #include <sbIMetadataJob.h> 76 #include <sbIFileMetadataService.h> 77 #include <sbIJobProgress.h> 77 78 #include <sbIPropertyManager.h> 78 79 #include <sbStandardProperties.h> … … 4046 4047 nsresult aStatusCode) 4047 4048 { 4048 nsCOMPtr<sbI MetadataJobManager>4049 pMetadata JobManager;4050 nsCOMPtr<sbI MetadataJob> pMetadataJob;4049 nsCOMPtr<sbIFileMetadataService> 4050 pMetadataService; 4051 nsCOMPtr<sbIJobProgress> pMetadataJob; 4051 4052 nsresult result = NS_OK; 4052 4053 4053 4054 /* Start a metadata scanning job. */ 4054 pMetadata JobManager= do_GetService4055 ("@songbirdnest.com/Songbird/ MetadataJobManager;1",4055 pMetadataService = do_GetService 4056 ("@songbirdnest.com/Songbird/FileMetadataService;1", 4056 4057 &result); 4057 4058 if (NS_SUCCEEDED(result)) 4058 4059 { 4059 result = pMetadataJobManager->NewJob(mpMediaItemArray, 4060 5, 4061 sbIMetadataJob::JOBTYPE_READ, 4062 getter_AddRefs(pMetadataJob)); 4060 result = pMetadataService->Read(mpMediaItemArray, 4061 getter_AddRefs(pMetadataJob)); 4063 4062 } 4064 4063 … … 4193 4192 NS_ENSURE_SUCCESS(rv, rv); 4194 4193 4195 nsCOMPtr<sbI MetadataJobManager> metadataJobManager;4196 nsCOMPtr<sbI MetadataJob>metadataJob;4194 nsCOMPtr<sbIFileMetadataService> metadataService; 4195 nsCOMPtr<sbIJobProgress> metadataJob; 4197 4196 4198 4197 /* Create an array to contain the media items to scan. */ … … 4204 4203 4205 4204 /* Start a metadata scanning job. */ 4206 metadata JobManager=4207 do_GetService("@songbirdnest.com/Songbird/ MetadataJobManager;1", &rv);4205 metadataService = 4206 do_GetService("@songbirdnest.com/Songbird/FileMetadataService;1", &rv); 4208 4207 NS_ENSURE_SUCCESS(rv, rv); 4209 4208 4210 return metadataJobManager->NewJob(itemArray, 4211 5, 4212 sbIMetadataJob::JOBTYPE_READ, 4213 getter_AddRefs(metadataJob)); 4214 } 4209 return metadataService->Read(itemArray, 4210 getter_AddRefs(metadataJob)); 4211 } -
trunk/components/devicesobsolete/download/src/DownloadDevice.h
r9666 r10092 90 90 #include <sbIDataRemote.h> 91 91 #include <sbILibrary.h> 92 #include <sbIMetadataJobManager.h> 92 93 93 94 94 -
trunk/components/devicesobsolete/download/src/Makefile.in
r9189 r10092 48 48 $(DEPTH)/components/devicesobsolete/download/public \ 49 49 $(DEPTH)/components/dataremote/public \ 50 $(DEPTH)/components/job/public \ 50 51 $(DEPTH)/components/library/base/public \ 51 52 $(DEPTH)/components/library/localdatabase/public \ -
trunk/components/jscodelib/DropHelper.jsm
r9858 r10092 1071 1071 if (this._scanList && 1072 1072 this._scanList.length > 0) { 1073 var metadata JobMgr=1074 this._Cc["@songbirdnest.com/Songbird/ MetadataJobManager;1"]1075 .getService(this._Ci.sbI MetadataJobManager);1076 metadata JobMgr.newJob(this._scanList, 5);1073 var metadataService = 1074 this._Cc["@songbirdnest.com/Songbird/FileMetadataService;1"] 1075 .getService(this._Ci.sbIFileMetadataService); 1076 metadataService.read(this._scanList); 1077 1077 this._scanList = null; 1078 1078 } -
trunk/components/library/localdatabase/public/sbILocalDatabaseLibrary.idl
r9065 r10092 91 91 92 92 /** 93 * These aren't meant to be called directly. Use sbAutoBatchHelper 94 * to avoid the risk of leaving a batch in progress 95 */ 96 [noscript] void ForceBeginUpdateBatch(); 97 [noscript] void ForceEndUpdateBatch(); 98 99 /** 93 100 * Oh My. We need this here to avoid a static cast in 94 101 * sbLocalDatabaseSimpleMediaListFactory where we need a -
trunk/components/library/localdatabase/src/sbLocalDatabaseDynamicPlaylist.js
r9673 r10092 648 648 array.appendElement(item, false); 649 649 } 650 651 var metadataJobManager = 652 Cc["@songbirdnest.com/Songbird/MetadataJobManager;1"] 653 .getService(Ci.sbIMetadataJobManager); 654 var metadataJob = metadataJobManager.newJob(array, 5); 655 650 651 var metadataService = Cc["@songbirdnest.com/Songbird/FileMetadataService;1"] 652 .getService(Ci.sbIFileMetadataService); 653 var metadataJob = metadataService.read(array); 654 656 655 // Download the new items 657 656 var ddh = -
trunk/components/library/localdatabase/src/sbLocalDatabaseLibrary.cpp
r10030 r10092 4116 4116 } 4117 4117 4118 NS_IMETHODIMP 4119 sbLocalDatabaseLibrary::ForceBeginUpdateBatch() { 4120 sbLocalDatabaseMediaListBase::BeginUpdateBatch(); 4121 return NS_OK; 4122 }; 4123 4124 NS_IMETHODIMP 4125 sbLocalDatabaseLibrary::ForceEndUpdateBatch() { 4126 sbLocalDatabaseMediaListBase::EndUpdateBatch(); 4127 return NS_OK; 4128 }; 4129 4118 4130 NS_IMETHODIMP 4119 4131 sbLocalDatabaseLibrary::GetNativeLibrary(sbLocalDatabaseLibrary** aLocalDatabaseLibrary) -
trunk/components/library/localdatabase/src/sbLocalDatabaseMediaListBase.h
r9921 r10092 112 112 } 113 113 114 // These aren't meant to be called directly. Use sbAutoBatchHelper 115 // to avoid the risk of leaving a batch in progress 116 void BeginUpdateBatch() { 117 sbLocalDatabaseMediaListListener::NotifyListenersBatchBegin(this); 118 } 119 void EndUpdateBatch() { 120 sbLocalDatabaseMediaListListener::NotifyListenersBatchEnd(this); 121 } 122 114 123 protected: 115 124 NS_IMETHOD GetDefaultSortProperty(nsAString& aProperty) = 0; … … 121 130 122 131 private: 123 // These aren't meant to be called directly, use sbAutoBatchHelper.124 void BeginUpdateBatch() {125 sbLocalDatabaseMediaListListener::NotifyListenersBatchBegin(this);126 }127 void EndUpdateBatch() {128 sbLocalDatabaseMediaListListener::NotifyListenersBatchEnd(this);129 }130 132 131 133 // This callback is meant to be used with an sbStringArrayHash. -
trunk/components/mediacore/metadata/handler/taglib/src/MetadataHandlerTaglib.cpp
r10058 r10092 148 148 ******************************************************************************/ 149 149 150 NS_IMPL_ISUPPORTS3(sbMetadataHandlerTaglib, sbIMetadataHandler, 151 sbISeekableChannelListener, 152 nsICharsetDetectionObserver) 150 NS_IMPL_THREADSAFE_ISUPPORTS3(sbMetadataHandlerTaglib, 151 sbIMetadataHandler, 152 sbISeekableChannelListener, 153 nsICharsetDetectionObserver) 153 154 154 155 … … 240 241 } 241 242 243 NS_IMETHODIMP 244 sbMetadataHandlerTaglib::GetRequiresMainThread(PRBool *_retval) 245 { 246 NS_ENSURE_ARG_POINTER(_retval); 247 NS_ENSURE_STATE(mpChannel); 248 nsresult rv; 249 250 nsCOMPtr<nsIURI> uri; 251 rv = mpChannel->GetURI(getter_AddRefs(uri)); 252 NS_ENSURE_SUCCESS(rv, rv); 253 254 PRBool isFileURI = PR_FALSE; 255 rv = uri->SchemeIs( "file" , &isFileURI ); 256 NS_ENSURE_SUCCESS(rv, rv); 257 258 // Taglib uses the nsIChannel for all protocols 259 // other than file:// and cannot be run off 260 // of the main thread in these cases. 261 262 *_retval = !isFileURI; 263 return NS_OK; 264 } 265 242 266 243 267 /** … … 254 278 PRInt32 *pReadCount) 255 279 { 256 nsresult rv; 280 nsresult rv = NS_ERROR_FAILURE; 281 257 282 AcquireTaglibLock(); 258 rv = ReadInternal(pReadCount); 283 // Attempt to avoid crashes. This may only work on windows. 284 try { 285 rv = ReadInternal(pReadCount); 286 } catch(...) { 287 NS_ERROR("sbMetadataHandlerTaglib::Read caught an exception!"); 288 } 259 289 ReleaseTaglibLock(); 290 260 291 // note that although ReleaseTaglibLock() has a return value, it always succeeds 261 // so we're really we'remost interested in the return value from ReadInternal();292 // so we're most interested in the return value from ReadInternal(); 262 293 263 294 return rv; … … 329 360 PRInt32 readCount = 0; 330 361 nsresult result = NS_OK; 362 363 // Starting a new operation, so clear the completion flag 364 mCompleted = PR_FALSE; 331 365 332 366 /* Get the TagLib sbISeekableChannel file IO manager. */ … … 347 381 348 382 /* Get the channel URL info. */ 349 if (NS_SUCCEEDED(result)) 350 result = mpChannel->GetURI(getter_AddRefs(pURI)); 351 if (NS_SUCCEEDED(result)) 352 { 353 pStandardURL = do_CreateInstance("@mozilla.org/network/standard-url;1", 354 &result); 355 } 356 if (NS_SUCCEEDED(result)) 357 { 358 result = pStandardURL->Init(pStandardURL->URLTYPE_STANDARD, 359 0, 360 NS_LITERAL_CSTRING(""), 361 nsnull, 362 pURI); 363 } 364 if (NS_SUCCEEDED(result)) 365 mpURL = do_QueryInterface(pStandardURL, &result); 383 if (!mpURL) { 384 result = NS_ERROR_NOT_INITIALIZED; 385 } 366 386 if (NS_SUCCEEDED(result)) 367 387 result = mpURL->GetSpec(urlSpec); … … 408 428 409 429 /* Read the metadata. */ 410 if (NS_SUCCEEDED(result)) 430 if (NS_SUCCEEDED(result)) { 411 431 result =