Bug 1272232. Part 4 - remove use of FlushableTaskQueue::Flush(). r=jya.
MozReview-Commit-ID: 93svIzpCuJM
--- a/dom/media/platforms/apple/AppleVDADecoder.cpp
+++ b/dom/media/platforms/apple/AppleVDADecoder.cpp
@@ -143,22 +143,22 @@ AppleVDADecoder::Input(MediaRawData* aSa
return NS_OK;
}
nsresult
AppleVDADecoder::Flush()
{
MOZ_ASSERT(mCallback->OnReaderTaskQueue());
mIsFlushing = true;
- mTaskQueue->Flush();
nsCOMPtr<nsIRunnable> runnable =
NewRunnableMethod(this, &AppleVDADecoder::ProcessFlush);
SyncRunnable::DispatchToThread(mTaskQueue, runnable);
mIsFlushing = false;
- mInputIncoming = 0;
+ // All ProcessDecode() tasks should be done.
+ MOZ_ASSERT(mInputIncoming == 0);
return NS_OK;
}
nsresult
AppleVDADecoder::Drain()
{
MOZ_ASSERT(mCallback->OnReaderTaskQueue());
nsCOMPtr<nsIRunnable> runnable =
@@ -431,16 +431,20 @@ AppleVDADecoder::OutputFrame(CVPixelBuff
nsresult
AppleVDADecoder::ProcessDecode(MediaRawData* aSample)
{
AssertOnTaskQueueThread();
mInputIncoming--;
+ if (mIsFlushing) {
+ return NS_OK;
+ }
+
auto rv = DoDecode(aSample);
// Ask for more data.
if (NS_SUCCEEDED(rv) && !mInputIncoming && mQueuedSamples <= mMaxRefFrames) {
LOG("%s task queue empty; requesting more data", GetDescriptionName());
mCallback->InputExhausted();
}
return rv;