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

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

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