Bug 1182958 - Use nsTHashTable::Iterator in image/. r=seth.

This commit is contained in:
Nicholas Nethercote 2015-07-14 06:37:57 -07:00
parent e064c94a32
commit 025b6f500e

View File

@ -77,8 +77,13 @@ public:
mKnownLoaders[i]->mChromeCache.EnumerateRead(DoRecordCounter, &chrome); mKnownLoaders[i]->mChromeCache.EnumerateRead(DoRecordCounter, &chrome);
mKnownLoaders[i]->mCache.EnumerateRead(DoRecordCounter, &content); mKnownLoaders[i]->mCache.EnumerateRead(DoRecordCounter, &content);
MutexAutoLock lock(mKnownLoaders[i]->mUncachedImagesMutex); MutexAutoLock lock(mKnownLoaders[i]->mUncachedImagesMutex);
mKnownLoaders[i]-> for (auto iter = mKnownLoaders[i]->mUncachedImages.Iter();
mUncachedImages.EnumerateEntries(DoRecordCounterUncached, &uncached); !iter.Done();
iter.Next()) {
nsPtrHashKey<imgRequest>* entry = iter.Get();
nsRefPtr<imgRequest> req = entry->GetKey();
RecordCounterForRequest(req, &uncached, req->HasConsumers());
}
} }
// Note that we only need to anonymize content image URIs. // Note that we only need to anonymize content image URIs.
@ -409,16 +414,6 @@ private:
return PL_DHASH_NEXT; return PL_DHASH_NEXT;
} }
static PLDHashOperator
DoRecordCounterUncached(nsPtrHashKey<imgRequest>* aEntry, void* aUserArg)
{
nsRefPtr<imgRequest> req = aEntry->GetKey();
RecordCounterForRequest(req,
static_cast<nsTArray<ImageMemoryCounter>*>(aUserArg),
req->HasConsumers());
return PL_DHASH_NEXT;
}
static void RecordCounterForRequest(imgRequest* aRequest, static void RecordCounterForRequest(imgRequest* aRequest,
nsTArray<ImageMemoryCounter>* aArray, nsTArray<ImageMemoryCounter>* aArray,
bool aIsUsed) bool aIsUsed)
@ -1154,15 +1149,6 @@ imgLoader::GetInstance()
return loader.forget(); return loader.forget();
} }
static PLDHashOperator
ClearLoaderPointer(nsPtrHashKey<imgRequest>* aEntry, void* aUserArg)
{
nsRefPtr<imgRequest> req = aEntry->GetKey();
req->ClearLoader();
return PL_DHASH_NEXT;
}
imgLoader::~imgLoader() imgLoader::~imgLoader()
{ {
ClearChromeImageCache(); ClearChromeImageCache();
@ -1171,7 +1157,11 @@ imgLoader::~imgLoader()
// If there are any of our imgRequest's left they are in the uncached // If there are any of our imgRequest's left they are in the uncached
// images set, so clear their pointer to us. // images set, so clear their pointer to us.
MutexAutoLock lock(mUncachedImagesMutex); MutexAutoLock lock(mUncachedImagesMutex);
mUncachedImages.EnumerateEntries(ClearLoaderPointer, nullptr); for (auto iter = mUncachedImages.Iter(); !iter.Done(); iter.Next()) {
nsPtrHashKey<imgRequest>* entry = iter.Get();
nsRefPtr<imgRequest> req = entry->GetKey();
req->ClearLoader();
}
} }
sMemReporter->UnregisterLoader(this); sMemReporter->UnregisterLoader(this);
sMemReporter->Release(); sMemReporter->Release();