mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-23 02:05:42 +00:00
Bug 344789 – "WARNING: Asked to remove non-existent observer" in <nsImageLoadingContent.cpp> |RemoveObserver()|
p=sgautherie r/sr=bzbarsky
This commit is contained in:
parent
a9906d2600
commit
45282e7f24
@ -152,6 +152,8 @@ protected:
|
||||
// can be false when this is true
|
||||
PRPackedBool mShouldResize;
|
||||
PRPackedBool mFirstResize;
|
||||
// mObservingImageLoader is true while the observer is set.
|
||||
PRPackedBool mObservingImageLoader;
|
||||
};
|
||||
|
||||
ImageListener::ImageListener(nsImageDocument* aDocument)
|
||||
@ -159,7 +161,6 @@ ImageListener::ImageListener(nsImageDocument* aDocument)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
ImageListener::~ImageListener()
|
||||
{
|
||||
}
|
||||
@ -212,6 +213,7 @@ ImageListener::OnStartRequest(nsIRequest* request, nsISupports *ctxt)
|
||||
NS_ENSURE_TRUE(imageLoader, NS_ERROR_UNEXPECTED);
|
||||
|
||||
imageLoader->AddObserver(imgDoc);
|
||||
imgDoc->mObservingImageLoader = PR_TRUE;
|
||||
imageLoader->LoadImageWithChannel(channel, getter_AddRefs(mNextStream));
|
||||
|
||||
return nsMediaDocumentStreamListener::OnStartRequest(request, ctxt);
|
||||
@ -227,6 +229,7 @@ ImageListener::OnStopRequest(nsIRequest* request, nsISupports *ctxt,
|
||||
|
||||
nsCOMPtr<nsIImageLoadingContent> imageLoader = do_QueryInterface(imgDoc->mImageContent);
|
||||
if (imageLoader) {
|
||||
imgDoc->mObservingImageLoader = PR_FALSE;
|
||||
imageLoader->RemoveObserver(imgDoc);
|
||||
}
|
||||
|
||||
@ -334,9 +337,11 @@ nsImageDocument::Destroy()
|
||||
target->RemoveEventListener(NS_LITERAL_STRING("click"), this, PR_FALSE);
|
||||
|
||||
// Break reference cycle with mImageContent, if we have one
|
||||
nsCOMPtr<nsIImageLoadingContent> imageLoader = do_QueryInterface(mImageContent);
|
||||
if (imageLoader) {
|
||||
imageLoader->RemoveObserver(this);
|
||||
if (mObservingImageLoader) {
|
||||
nsCOMPtr<nsIImageLoadingContent> imageLoader = do_QueryInterface(mImageContent);
|
||||
if (imageLoader) {
|
||||
imageLoader->RemoveObserver(this);
|
||||
}
|
||||
}
|
||||
|
||||
mImageContent = nsnull;
|
||||
|
Loading…
Reference in New Issue
Block a user