From 097cbfb77f409d1412203a2ece69f0c84e8ca031 Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Mon, 11 May 2015 15:06:44 +0100 Subject: [PATCH] Bug 1163585 - Small improvement of the use of nsTArray in MSG::UpdateCurrentTimeForStreams, r=padenot --- dom/media/MediaStreamGraph.cpp | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/dom/media/MediaStreamGraph.cpp b/dom/media/MediaStreamGraph.cpp index dc1fe9a035a0..28dcfe84289e 100644 --- a/dom/media/MediaStreamGraph.cpp +++ b/dom/media/MediaStreamGraph.cpp @@ -400,15 +400,13 @@ MediaStreamGraphImpl::IterationEnd() void MediaStreamGraphImpl::UpdateCurrentTimeForStreams(GraphTime aPrevCurrentTime, GraphTime aNextCurrentTime) { - nsTArray streamsReadyToFinish; - nsAutoTArray streamHasOutput; + nsAutoTArray streamsReadyToFinish; + nsAutoTArray streamsWithOutput; nsTArray* runningAndSuspendedPair[2]; runningAndSuspendedPair[0] = &mStreams; runningAndSuspendedPair[1] = &mSuspendedStreams; - streamHasOutput.SetLength(mStreams.Length()); - for (uint32_t array = 0; array < 2; array++) { for (uint32_t i = 0; i < runningAndSuspendedPair[array]->Length(); ++i) { MediaStream* stream = (*runningAndSuspendedPair[array])[i]; @@ -445,12 +443,16 @@ MediaStreamGraphImpl::UpdateCurrentTimeForStreams(GraphTime aPrevCurrentTime, Gr stream->mBlocked.AdvanceCurrentTime(aNextCurrentTime); if (runningAndSuspendedPair[array] == &mStreams) { - streamHasOutput[i] = blockedTime < aNextCurrentTime - aPrevCurrentTime; + bool streamHasOutput = blockedTime < aNextCurrentTime - aPrevCurrentTime; // Make this an assertion when bug 957832 is fixed. NS_WARN_IF_FALSE( - !streamHasOutput[i] || !stream->mNotifiedFinished, + !streamHasOutput || !stream->mNotifiedFinished, "Shouldn't have already notified of finish *and* have output!"); + if (streamHasOutput) { + streamsWithOutput.AppendElement(stream); + } + if (stream->mFinished && !stream->mNotifiedFinished) { streamsReadyToFinish.AppendElement(stream); } @@ -462,12 +464,8 @@ MediaStreamGraphImpl::UpdateCurrentTimeForStreams(GraphTime aPrevCurrentTime, Gr } } - - for (uint32_t i = 0; i < streamHasOutput.Length(); ++i) { - if (!streamHasOutput[i]) { - continue; - } - MediaStream* stream = mStreams[i]; + for (uint32_t i = 0; i < streamsWithOutput.Length(); ++i) { + MediaStream* stream = streamsWithOutput[i]; for (uint32_t j = 0; j < stream->mListeners.Length(); ++j) { MediaStreamListener* l = stream->mListeners[j]; l->NotifyOutput(this, IterationEnd());