Clear weak pointers in VTT shutdown observers.

This commit is contained in:
wolfbeast 2018-12-11 23:17:50 +01:00 • committed by Roy Tam
commit bb5e286644
2 changed files with 14 additions and 3 deletions

View file

@ -29,6 +29,13 @@ namespace dom {
NS_IMPL_ISUPPORTS(TextTrackManager::ShutdownObserverProxy, nsIObserver); NS_IMPL_ISUPPORTS(TextTrackManager::ShutdownObserverProxy, nsIObserver);
void
TextTrackManager::ShutdownObserverProxy::Unregister()
{
nsContentUtils::UnregisterShutdownObserver(this);
mManager = nullptr;
}
CompareTextTracks::CompareTextTracks(HTMLMediaElement* aMediaElement) CompareTextTracks::CompareTextTracks(HTMLMediaElement* aMediaElement)
{ {
mMediaElement = aMediaElement; mMediaElement = aMediaElement;
@ -137,7 +144,7 @@ TextTrackManager::TextTrackManager(HTMLMediaElement *aMediaElement)
TextTrackManager::~TextTrackManager() TextTrackManager::~TextTrackManager()
{ {
WEBVTT_LOG("%p ~TextTrackManager",this); WEBVTT_LOG("%p ~TextTrackManager",this);
nsContentUtils::UnregisterShutdownObserver(mShutdownProxy); mShutdownProxy->Unregister();
} }
TextTrackList* TextTrackList*

View file

@ -170,11 +170,15 @@ private:
{ {
MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(NS_IsMainThread());
if (strcmp(aTopic, NS_XPCOM_SHUTDOWN_OBSERVER_ID) == 0) { if (strcmp(aTopic, NS_XPCOM_SHUTDOWN_OBSERVER_ID) == 0) {
nsContentUtils::UnregisterShutdownObserver(this); if (mManager) {
mManager->NotifyShutdown(); mManager->NotifyShutdown();
}
Unregister();
} }
return NS_OK; return NS_OK;
} }
void Unregister();
private: private:
~ShutdownObserverProxy() {}; ~ShutdownObserverProxy() {};