зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
3eddceb36d
Коммит
c54e2c8f44
|
@ -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;
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче