Bug 1272232. Part 4 - remove use of FlushableTaskQueue::Flush(). r=jya. draft
authorJW Wang <jwwang@mozilla.com>
Sun, 15 May 2016 20:14:56 +0800
changeset 367175 6ff65c10d99a6a7d55f285072d7e8699ad02826a
parent 367174 8fc418b80b19dbf99a56347ca3ebe285f7be37c6
child 367176 ee768214617d598595f3ef15929c1eec34eb608e
push id18157
push userjwwang@mozilla.com
push dateSun, 15 May 2016 13:11:25 +0000
reviewersjya
bugs1272232
milestone49.0a1
Bug 1272232. Part 4 - remove use of FlushableTaskQueue::Flush(). r=jya. MozReview-Commit-ID: 93svIzpCuJM
dom/media/platforms/apple/AppleVDADecoder.cpp
--- 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;