Bug 1274199 - remove use of FlushableTaskQueue. r=cpearce.

MozReview-Commit-ID: J9BHEuF6CPJ
This commit is contained in:
JW Wang 2016-05-19 17:04:18 +08:00
parent fbdef02717
commit 13fa174ec0

View File

@ -25,11 +25,9 @@ class BlankMediaDataDecoder : public MediaDataDecoder {
public:
BlankMediaDataDecoder(BlankMediaDataCreator* aCreator,
FlushableTaskQueue* aTaskQueue,
MediaDataDecoderCallback* aCallback,
TrackInfo::TrackType aType)
: mCreator(aCreator)
, mTaskQueue(aTaskQueue)
, mCallback(aCallback)
, mType(aType)
{
@ -43,46 +41,21 @@ public:
return NS_OK;
}
class OutputEvent : public Runnable {
public:
OutputEvent(MediaRawData* aSample,
MediaDataDecoderCallback* aCallback,
BlankMediaDataCreator* aCreator)
: mSample(aSample)
, mCreator(aCreator)
, mCallback(aCallback)
{
}
NS_IMETHOD Run() override
{
RefPtr<MediaData> data =
mCreator->Create(media::TimeUnit::FromMicroseconds(mSample->mTime),
media::TimeUnit::FromMicroseconds(mSample->mDuration),
mSample->mOffset);
if (!data) {
return NS_ERROR_OUT_OF_MEMORY;
}
mCallback->Output(data);
return NS_OK;
}
private:
RefPtr<MediaRawData> mSample;
BlankMediaDataCreator* mCreator;
MediaDataDecoderCallback* mCallback;
};
nsresult Input(MediaRawData* aSample) override
{
// The MediaDataDecoder must delete the sample when we're finished
// with it, so the OutputEvent stores it in an nsAutoPtr and deletes
// it once it's run.
RefPtr<nsIRunnable> r(new OutputEvent(aSample, mCallback, mCreator));
mTaskQueue->Dispatch(r.forget());
RefPtr<MediaData> data =
mCreator->Create(media::TimeUnit::FromMicroseconds(aSample->mTime),
media::TimeUnit::FromMicroseconds(aSample->mDuration),
aSample->mOffset);
if (!data) {
mCallback->Error();
} else {
mCallback->Output(data);
}
return NS_OK;
}
nsresult Flush() override {
mTaskQueue->Flush();
return NS_OK;
}
@ -98,7 +71,6 @@ public:
private:
nsAutoPtr<BlankMediaDataCreator> mCreator;
RefPtr<FlushableTaskQueue> mTaskQueue;
MediaDataDecoderCallback* mCallback;
TrackInfo::TrackType mType;
};
@ -236,7 +208,6 @@ public:
aConfig.mDisplay.width, aConfig.mDisplay.height, aImageContainer);
RefPtr<MediaDataDecoder> decoder =
new BlankMediaDataDecoder<BlankVideoDataCreator>(creator,
aVideoTaskQueue,
aCallback,
TrackInfo::kVideoTrack);
return decoder.forget();
@ -253,7 +224,6 @@ public:
RefPtr<MediaDataDecoder> decoder =
new BlankMediaDataDecoder<BlankAudioDataCreator>(creator,
aAudioTaskQueue,
aCallback,
TrackInfo::kAudioTrack);
return decoder.forget();