Bug 591560: Fix annoying abort in animated gifs. r=bz a=blocker

This commit is contained in:
Bobby Holley 2010-08-31 21:26:41 -04:00
Родитель 65a0b10e6c
Коммит 2af597c8fa
2 изменённых файлов: 11 добавлений и 4 удалений

Просмотреть файл

@ -567,10 +567,8 @@ nsImageLoadingContent::NotifyOwnerDocumentChanged(nsIDocument *aOldDoc)
}
// Re-track the images
if (mCurrentRequest)
TrackImage(mCurrentRequest);
if (mPendingRequest)
TrackImage(mPendingRequest);
TrackImage(mCurrentRequest);
TrackImage(mPendingRequest);
}
nsresult
@ -985,6 +983,9 @@ nsImageLoadingContent::SetBlockingOnload(PRBool aBlocking)
nsresult
nsImageLoadingContent::TrackImage(imgIRequest* aImage)
{
if (!aImage)
return NS_OK;
nsIDocument* doc = GetOurDocument();
if (doc)
return doc->AddImage(aImage);
@ -994,6 +995,9 @@ nsImageLoadingContent::TrackImage(imgIRequest* aImage)
nsresult
nsImageLoadingContent::UntrackImage(imgIRequest* aImage)
{
if (!aImage)
return NS_OK;
// If GetOurDocument() returns null here, we've outlived our document.
// That's fine, because the document empties out the tracker and unlocks
// all locked images on destruction.
@ -1008,6 +1012,7 @@ void
nsImageLoadingContent::CreateStaticImageClone(nsImageLoadingContent* aDest) const
{
aDest->mCurrentRequest = nsContentUtils::GetStaticRequest(mCurrentRequest);
aDest->TrackImage(aDest->mCurrentRequest);
aDest->mForcedImageState = mForcedImageState;
aDest->mImageBlockingStatus = mImageBlockingStatus;
aDest->mLoadingEnabled = mLoadingEnabled;

Просмотреть файл

@ -284,6 +284,8 @@ protected:
/**
* Adds/Removes a given imgIRequest from our document's tracker.
*
* No-op if aImage is null.
*/
nsresult TrackImage(imgIRequest* aImage);
nsresult UntrackImage(imgIRequest* aImage);