mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-27 12:50:09 +00:00
Bug 1367207 part 4 - Use LookupRemoveIf() to avoid a second hashtable lookup for Remove(). r=dholbert
MozReview-Commit-ID: 6EYkiKpLHvI
This commit is contained in:
parent
0630f5b2bf
commit
7dd909a5ce
@ -147,35 +147,35 @@ ImageLoader::RemoveRequestToFrameMapping(imgIRequest* aRequest,
|
||||
}
|
||||
#endif
|
||||
|
||||
FrameSet* frameSet = nullptr;
|
||||
mRequestToFrameMap.Get(aRequest, &frameSet);
|
||||
if (frameSet) {
|
||||
frameSet->RemoveElementSorted(aFrame);
|
||||
if (frameSet->IsEmpty()) {
|
||||
mRequestToFrameMap.Remove(aRequest);
|
||||
|
||||
nsPresContext* presContext = GetPresContext();
|
||||
if (presContext) {
|
||||
nsLayoutUtils::DeregisterImageRequest(presContext, aRequest, nullptr);
|
||||
mRequestToFrameMap.LookupRemoveIf(aRequest,
|
||||
[aRequest, aFrame, this] (FrameSet* aFrameSet) {
|
||||
MOZ_ASSERT(aFrameSet, "This should never be null");
|
||||
aFrameSet->RemoveElementSorted(aFrame);
|
||||
bool remove = aFrameSet->IsEmpty();
|
||||
if (remove) {
|
||||
nsPresContext* presContext = GetPresContext();
|
||||
if (presContext) {
|
||||
nsLayoutUtils::DeregisterImageRequest(presContext, aRequest, nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return remove;
|
||||
});
|
||||
}
|
||||
|
||||
void
|
||||
ImageLoader::RemoveFrameToRequestMapping(imgIRequest* aRequest,
|
||||
nsIFrame* aFrame)
|
||||
{
|
||||
RequestSet* requestSet = nullptr;
|
||||
mFrameToRequestMap.Get(aFrame, &requestSet);
|
||||
if (requestSet) {
|
||||
MOZ_ASSERT(aFrame->HasImageRequest(), "HasImageRequest is lying");
|
||||
requestSet->RemoveElementSorted(aRequest);
|
||||
if (requestSet->IsEmpty()) {
|
||||
mFrameToRequestMap.Remove(aFrame);
|
||||
aFrame->SetHasImageRequest(false);
|
||||
}
|
||||
}
|
||||
mFrameToRequestMap.LookupRemoveIf(aFrame,
|
||||
[aRequest, aFrame] (RequestSet* aRequestSet) {
|
||||
MOZ_ASSERT(aRequestSet, "This should never be null");
|
||||
aRequestSet->RemoveElementSorted(aRequest);
|
||||
bool remove = aRequestSet->IsEmpty();
|
||||
if (remove) {
|
||||
aFrame->SetHasImageRequest(false);
|
||||
}
|
||||
return remove;
|
||||
});
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
x
Reference in New Issue
Block a user