ported from UXP: Clear weak pointers in FT2 font list shutdown observers. (f3de54e8)

This commit is contained in:
2022-03-29 15:14:36 +08:00
parent 7852fdcc6c
commit aa27f3f5cb
2 changed files with 12 additions and 6 deletions
+10 -5
View File
@@ -812,6 +812,15 @@ public:
: mFontList(aFontList)
{ }
void Remove()
{
nsCOMPtr<nsIObserverService> obs = services::GetObserverService();
if (obs) {
obs->RemoveObserver(this, NS_XPCOM_WILL_SHUTDOWN_OBSERVER_ID);
}
mFontList = nullptr;
}
protected:
virtual ~WillShutdownObserver()
{ }
@@ -847,11 +856,7 @@ gfxFT2FontList::gfxFT2FontList()
gfxFT2FontList::~gfxFT2FontList()
{
if (mObserver) {
nsCOMPtr<nsIObserverService> obs = services::GetObserverService();
if (obs) {
obs->RemoveObserver(mObserver, NS_XPCOM_WILL_SHUTDOWN_OBSERVER_ID);
}
mObserver = nullptr;
mObserver->Remove();
}
}
+2 -1
View File
@@ -19,6 +19,7 @@ using mozilla::dom::FontListEntry;
class FontNameCache;
typedef struct FT_FaceRec_* FT_Face;
class nsZipArchive;
class WillShutdownObserver;
class FT2FontEntry : public gfxFontEntry
{
@@ -194,7 +195,7 @@ private:
mozilla::UniquePtr<FontNameCache> mFontNameCache;
int64_t mJarModifiedTime;
nsCOMPtr<nsIObserver> mObserver;
RefPtr<WillShutdownObserver> mObserver;
};
#endif /* GFX_FT2FONTLIST_H */