Bug 1273390. Part 2 - add assertions. r=jya. draft 1273390_WaveDataDecoder_Flush
authorJW Wang <jwwang@mozilla.com>
Tue, 17 May 2016 14:42:21 +0800
branch1273390_WaveDataDecoder_Flush
changeset 367670 a0d552c74f1b5839daaeb52de092b81935aea1cf
parent 367669 0f9cf8926c0add19fd65685fe3101935b64b039e
child 367671 a289e8c41dbb6f28705a6cfc0f5661ed80819e51
push id18315
push userjwwang@mozilla.com
push dateTue, 17 May 2016 06:58:32 +0000
reviewersjya
bugs1273390
milestone49.0a1
Bug 1273390. Part 2 - add assertions. r=jya. MozReview-Commit-ID: DoXLJA4XUSP
dom/media/platforms/agnostic/WAVDecoder.cpp
--- a/dom/media/platforms/agnostic/WAVDecoder.cpp
+++ b/dom/media/platforms/agnostic/WAVDecoder.cpp
@@ -65,36 +65,40 @@ RefPtr<MediaDataDecoder::InitPromise>
 WaveDataDecoder::Init()
 {
   return InitPromise::CreateAndResolve(TrackInfo::kAudioTrack, __func__);
 }
 
 nsresult
 WaveDataDecoder::Input(MediaRawData* aSample)
 {
+  MOZ_ASSERT(mCallback->OnReaderTaskQueue());
   mTaskQueue->Dispatch(NewRunnableMethod<RefPtr<MediaRawData>>(
                          this, &WaveDataDecoder::Decode,
                          RefPtr<MediaRawData>(aSample)));
 
   return NS_OK;
 }
 
 void
 WaveDataDecoder::Decode(MediaRawData* aSample)
 {
+  MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
   if (!DoDecode(aSample)) {
     mCallback->Error();
   } else if (mTaskQueue->IsEmpty()) {
     mCallback->InputExhausted();
   }
 }
 
 bool
 WaveDataDecoder::DoDecode(MediaRawData* aSample)
 {
+  MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
+
   size_t aLength = aSample->Size();
   ByteReader aReader = ByteReader(aSample->Data(), aLength);
   int64_t aOffset = aSample->mOffset;
   uint64_t aTstampUsecs = aSample->mTime;
 
   int32_t frames = aLength * 8 / mInfo.mBitDepth / mInfo.mChannels;
 
   AlignedAudioBuffer buffer(frames * mInfo.mChannels);
@@ -145,29 +149,32 @@ WaveDataDecoder::DoDecode(MediaRawData* 
   mFrames += frames;
 
   return true;
 }
 
 void
 WaveDataDecoder::DoDrain()
 {
+  MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
   mCallback->DrainComplete();
 }
 
 nsresult
 WaveDataDecoder::Drain()
 {
+  MOZ_ASSERT(mCallback->OnReaderTaskQueue());
   mTaskQueue->Dispatch(NewRunnableMethod(this, &WaveDataDecoder::DoDrain));
   return NS_OK;
 }
 
 nsresult
 WaveDataDecoder::Flush()
 {
+  MOZ_ASSERT(mCallback->OnReaderTaskQueue());
   mTaskQueue->Flush();
   mFrames = 0;
   return NS_OK;
 }
 
 /* static */
 bool
 WaveDataDecoder::IsWave(const nsACString& aMimeType)