Bug 1273390. Part 4 - remove use of FlushableTaskQueue::Flush(). r=jya.

MozReview-Commit-ID: HTIZQ5XoprF

--HG--
extra : rebase_source : 2eb123d9be20a525953a7049c2758f413e88775f
This commit is contained in:
JW Wang 2016-05-17 14:56:05 +08:00
Родитель 3eddceb36d
Коммит c54e2c8f44
2 изменённых файлов: 12 добавлений и 2 удалений

Просмотреть файл

@ -7,6 +7,7 @@
#include "WAVDecoder.h" #include "WAVDecoder.h"
#include "AudioSampleFormat.h" #include "AudioSampleFormat.h"
#include "nsAutoPtr.h" #include "nsAutoPtr.h"
#include "mozilla/SyncRunnable.h"
using mp4_demuxer::ByteReader; using mp4_demuxer::ByteReader;
@ -51,6 +52,7 @@ WaveDataDecoder::WaveDataDecoder(const AudioInfo& aConfig,
: mInfo(aConfig) : mInfo(aConfig)
, mTaskQueue(aTaskQueue) , mTaskQueue(aTaskQueue)
, mCallback(aCallback) , mCallback(aCallback)
, mIsFlushing(false)
, mFrames(0) , mFrames(0)
{ {
} }
@ -81,6 +83,9 @@ void
WaveDataDecoder::ProcessDecode(MediaRawData* aSample) WaveDataDecoder::ProcessDecode(MediaRawData* aSample)
{ {
MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn()); MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
if (mIsFlushing) {
return;
}
if (!DoDecode(aSample)) { if (!DoDecode(aSample)) {
mCallback->Error(); mCallback->Error();
} else if (mTaskQueue->IsEmpty()) { } else if (mTaskQueue->IsEmpty()) {
@ -169,8 +174,12 @@ nsresult
WaveDataDecoder::Flush() WaveDataDecoder::Flush()
{ {
MOZ_ASSERT(mCallback->OnReaderTaskQueue()); MOZ_ASSERT(mCallback->OnReaderTaskQueue());
mTaskQueue->Flush(); mIsFlushing = true;
mFrames = 0; nsCOMPtr<nsIRunnable> r = NS_NewRunnableFunction([this] () {
mFrames = 0;
});
SyncRunnable::DispatchToThread(mTaskQueue, r);
mIsFlushing = false;
return NS_OK; return NS_OK;
} }

Просмотреть файл

@ -40,6 +40,7 @@ private:
const AudioInfo& mInfo; const AudioInfo& mInfo;
RefPtr<FlushableTaskQueue> mTaskQueue; RefPtr<FlushableTaskQueue> mTaskQueue;
MediaDataDecoderCallback* mCallback; MediaDataDecoderCallback* mCallback;
Atomic<bool> mIsFlushing;
int64_t mFrames; int64_t mFrames;
}; };