Bug 1296531 - Notify MSG track listeners of removal during shutdown. r?jesup
MozReview-Commit-ID: BnWrUUvE5qk
--- a/dom/media/MediaStreamGraph.cpp
+++ b/dom/media/MediaStreamGraph.cpp
@@ -2475,16 +2475,22 @@ MediaStream::RemoveTrackListener(MediaSt
public:
Message(MediaStream* aStream, MediaStreamTrackListener* aListener,
TrackID aTrackID) :
ControlMessage(aStream), mListener(aListener), mTrackID(aTrackID) {}
void Run() override
{
mStream->RemoveTrackListenerImpl(mListener, mTrackID);
}
+ void RunDuringShutdown() override
+ {
+ // During shutdown we still want the listener's NotifyRemoved to be
+ // called, since not doing that might block shutdown of other modules.
+ Run();
+ }
RefPtr<MediaStreamTrackListener> mListener;
TrackID mTrackID;
};
GraphImpl()->AppendMessage(MakeUnique<Message>(this, aListener, aTrackID));
}
void
MediaStream::AddDirectTrackListenerImpl(already_AddRefed<DirectMediaStreamTrackListener> aListener,
@@ -2531,16 +2537,23 @@ MediaStream::RemoveDirectTrackListener(D
public:
Message(MediaStream* aStream, DirectMediaStreamTrackListener* aListener,
TrackID aTrackID) :
ControlMessage(aStream), mListener(aListener), mTrackID(aTrackID) {}
void Run() override
{
mStream->RemoveDirectTrackListenerImpl(mListener, mTrackID);
}
+ void RunDuringShutdown() override
+ {
+ // During shutdown we still want the listener's
+ // NotifyDirectListenerUninstalled to be called, since not doing that
+ // might block shutdown of other modules.
+ Run();
+ }
RefPtr<DirectMediaStreamTrackListener> mListener;
TrackID mTrackID;
};
GraphImpl()->AppendMessage(MakeUnique<Message>(this, aListener, aTrackID));
}
void
MediaStream::RunAfterPendingUpdates(already_AddRefed<nsIRunnable> aRunnable)