Bug 660568 nsImageFrame::IconLoad must call Preferences::RemoveObservers() r=roc

This commit is contained in:
Masayuki Nakano 2011-06-03 15:07:10 +09:00
parent b1a2c45392
commit 22b9771448
2 changed files with 15 additions and 12 deletions

View File

@ -1892,6 +1892,20 @@ nsImageFrame::IconLoad::IconLoad()
GetPrefs();
}
void
nsImageFrame::IconLoad::Shutdown()
{
Preferences::RemoveObservers(this, kIconLoadPrefs);
// in case the pref service releases us later
if (mLoadingImage) {
mLoadingImage->CancelAndForgetObserver(NS_ERROR_FAILURE);
mLoadingImage = nsnull;
}
if (mBrokenImage) {
mBrokenImage->CancelAndForgetObserver(NS_ERROR_FAILURE);
mBrokenImage = nsnull;
}
}
NS_IMETHODIMP
nsImageFrame::IconLoad::Observe(nsISupports *aSubject, const char* aTopic,

View File

@ -328,18 +328,7 @@ private:
public:
IconLoad();
void Shutdown()
{
// in case the pref service releases us later
if (mLoadingImage) {
mLoadingImage->CancelAndForgetObserver(NS_ERROR_FAILURE);
mLoadingImage = nsnull;
}
if (mBrokenImage) {
mBrokenImage->CancelAndForgetObserver(NS_ERROR_FAILURE);
mBrokenImage = nsnull;
}
}
void Shutdown();
NS_DECL_ISUPPORTS
NS_DECL_NSIOBSERVER