Bug 1299515 - Don't assert that tracks must be ended in forced shutdown. r?padenot
I hit this during local tests. It's a fine invariant but it doesn't hold in
forced shutdown.
MozReview-Commit-ID: HtoiGwf7IMI
--- a/dom/media/MediaStreamGraph.cpp
+++ b/dom/media/MediaStreamGraph.cpp
@@ -1969,23 +1969,27 @@ MediaStream::GraphTimeToStreamTimeWithBl
void
MediaStream::FinishOnGraphThread()
{
if (mFinished) {
return;
}
LOG(LogLevel::Debug, ("MediaStream %p will finish", this));
#ifdef DEBUG
- for (StreamTracks::TrackIter track(mTracks); !track.IsEnded(); track.Next()) {
- if (!track->IsEnded()) {
- LOG(LogLevel::Error,
- ("MediaStream %p will finish, but track %d has not ended.",
- this,
- track->GetID()));
- NS_ASSERTION(false, "Finished stream cannot contain live track");
+ if (!mGraph->mForceShutDown) {
+ // All tracks must be ended by the source before the stream finishes.
+ // The exception is in forced shutdown, where we finish all streams as is.
+ for (StreamTracks::TrackIter track(mTracks); !track.IsEnded(); track.Next()) {
+ if (!track->IsEnded()) {
+ LOG(LogLevel::Error,
+ ("MediaStream %p will finish, but track %d has not ended.",
+ this,
+ track->GetID()));
+ NS_ASSERTION(false, "Finished stream cannot contain live track");
+ }
}
}
#endif
mFinished = true;
mTracks.AdvanceKnownTracksTime(STREAM_TIME_MAX);
// Let the MSG knows that this stream can be destroyed if necessary to avoid
// unnecessarily processing it in the future.