Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1000)

Unified Diff: media/filters/gpu_video_decoder.cc

Issue 10855051: Use enum instead of string in MessageLoopFactory::GetMessageLoop* (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/gpu_video_decoder.h ('k') | media/filters/pipeline_integration_test_base.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..3a59a3c7386a3a27c609e8b0a44e0164fbfc252e 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 MessageLoopFactoryCB& message_loop_factory_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_factory_cb),
+ gvd_loop_proxy_(NULL),
+ vda_loop_proxy_(vda_loop_proxy),
factories_(factories),
state_(kNormal),
demuxer_read_in_progress_(false),
@@ -57,7 +58,8 @@ GpuVideoDecoder::GpuVideoDecoder(
next_bitstream_buffer_id_(0),
shutting_down_(false),
error_occured_(false) {
- DCHECK(gvd_loop_proxy_ && factories_);
+ DCHECK(!message_loop_factory_cb_.is_null());
+ DCHECK(factories_);
}
void GpuVideoDecoder::Reset(const base::Closure& closure) {
@@ -113,13 +115,15 @@ 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));
return;
}
+ DCHECK(gvd_loop_proxy_->BelongsToCurrentThread());
PipelineStatusCB status_cb = CreateUMAReportingPipelineCB(
"Media.GpuVideoDecoderInitializeStatus", orig_status_cb);
« no previous file with comments | « media/filters/gpu_video_decoder.h ('k') | media/filters/pipeline_integration_test_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698