diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-12-11 23:17:50 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-12-11 23:17:50 +0100 |
commit | 4f7e431137caffc0c1cc8deee361893a7eabe70c (patch) | |
tree | a6144fcb03d3cb5a2a3fbd8dae5aaff27bf4f932 /dom | |
parent | 5639e1ddd291a4f492fbdf061408ab36ba79f008 (diff) | |
download | UXP-4f7e431137caffc0c1cc8deee361893a7eabe70c.tar UXP-4f7e431137caffc0c1cc8deee361893a7eabe70c.tar.gz UXP-4f7e431137caffc0c1cc8deee361893a7eabe70c.tar.lz UXP-4f7e431137caffc0c1cc8deee361893a7eabe70c.tar.xz UXP-4f7e431137caffc0c1cc8deee361893a7eabe70c.zip |
Clear weak pointers in VTT shutdown observers.
Diffstat (limited to 'dom')
-rw-r--r-- | dom/html/TextTrackManager.cpp | 9 | ||||
-rw-r--r-- | dom/html/TextTrackManager.h | 8 |
2 files changed, 14 insertions, 3 deletions
diff --git a/dom/html/TextTrackManager.cpp b/dom/html/TextTrackManager.cpp index 4266575f7..cc14858b6 100644 --- a/dom/html/TextTrackManager.cpp +++ b/dom/html/TextTrackManager.cpp @@ -29,6 +29,13 @@ namespace dom { NS_IMPL_ISUPPORTS(TextTrackManager::ShutdownObserverProxy, nsIObserver); +void +TextTrackManager::ShutdownObserverProxy::Unregister() +{ + nsContentUtils::UnregisterShutdownObserver(this); + mManager = nullptr; +} + CompareTextTracks::CompareTextTracks(HTMLMediaElement* aMediaElement) { mMediaElement = aMediaElement; @@ -137,7 +144,7 @@ TextTrackManager::TextTrackManager(HTMLMediaElement *aMediaElement) TextTrackManager::~TextTrackManager() { WEBVTT_LOG("%p ~TextTrackManager",this); - nsContentUtils::UnregisterShutdownObserver(mShutdownProxy); + mShutdownProxy->Unregister(); } TextTrackList* diff --git a/dom/html/TextTrackManager.h b/dom/html/TextTrackManager.h index d20707346..4ad1a57a7 100644 --- a/dom/html/TextTrackManager.h +++ b/dom/html/TextTrackManager.h @@ -170,11 +170,15 @@ private: { MOZ_ASSERT(NS_IsMainThread()); if (strcmp(aTopic, NS_XPCOM_SHUTDOWN_OBSERVER_ID) == 0) { - nsContentUtils::UnregisterShutdownObserver(this); - mManager->NotifyShutdown(); + if (mManager) { + mManager->NotifyShutdown(); + } + Unregister(); } return NS_OK; } + + void Unregister(); private: ~ShutdownObserverProxy() {}; |