| Index: media/filters/gpu_video_decoder.cc
|
| diff --git a/media/filters/gpu_video_decoder.cc b/media/filters/gpu_video_decoder.cc
|
| index 5e8231a5f4c0d0351debc6d02b66dc15c2399f59..25cd8e1a42804667d69d7c87bb7981658abb91fa 100644
|
| --- a/media/filters/gpu_video_decoder.cc
|
| +++ b/media/filters/gpu_video_decoder.cc
|
| @@ -44,11 +44,12 @@ GpuVideoDecoder::BufferData::BufferData(
|
| GpuVideoDecoder::BufferData::~BufferData() {}
|
|
|
| GpuVideoDecoder::GpuVideoDecoder(
|
| - MessageLoop* message_loop,
|
| - MessageLoop* vda_loop,
|
| + const MessageLoopCB& message_loop_cb,
|
| + const scoped_refptr<base::MessageLoopProxy>& vda_loop_proxy,
|
| const scoped_refptr<Factories>& factories)
|
| - : gvd_loop_proxy_(message_loop->message_loop_proxy()),
|
| - vda_loop_proxy_(vda_loop->message_loop_proxy()),
|
| + : message_loop_factory_cb_(message_loop_cb),
|
| + gvd_loop_proxy_(NULL),
|
| + vda_loop_proxy_(vda_loop_proxy),
|
| factories_(factories),
|
| state_(kNormal),
|
| demuxer_read_in_progress_(false),
|
| @@ -113,7 +114,8 @@ void GpuVideoDecoder::Stop(const base::Closure& closure) {
|
| void GpuVideoDecoder::Initialize(const scoped_refptr<DemuxerStream>& stream,
|
| const PipelineStatusCB& orig_status_cb,
|
| const StatisticsCB& statistics_cb) {
|
| - if (!gvd_loop_proxy_->BelongsToCurrentThread()) {
|
| + if (!gvd_loop_proxy_) {
|
| + gvd_loop_proxy_ = base::ResetAndReturn(&message_loop_factory_cb_).Run();
|
| gvd_loop_proxy_->PostTask(FROM_HERE, base::Bind(
|
| &GpuVideoDecoder::Initialize,
|
| this, stream, orig_status_cb, statistics_cb));
|
|
|