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

Unified Diff: webkit/glue/webmediaplayer_impl.cc

Issue 6171009: Remove MessageLoop methods from Filter interface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Applied more CR suggestions & removed message_loop() methods where possible. Created 9 years, 11 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 | « webkit/glue/webmediaplayer_impl.h ('k') | webkit/support/webkit_support.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/glue/webmediaplayer_impl.cc
diff --git a/webkit/glue/webmediaplayer_impl.cc b/webkit/glue/webmediaplayer_impl.cc
index 005c7cff5a016792f0d7935406ab6947bc666732..3bfb6a91a0112f13cbb1b811e5009d11d593c410 100644
--- a/webkit/glue/webmediaplayer_impl.cc
+++ b/webkit/glue/webmediaplayer_impl.cc
@@ -225,13 +225,14 @@ void WebMediaPlayerImpl::Proxy::PutCurrentFrame(
WebMediaPlayerImpl::WebMediaPlayerImpl(
WebKit::WebMediaPlayerClient* client,
- media::FilterCollection* collection)
+ media::FilterCollection* collection,
+ media::MessageLoopFactory* message_loop_factory)
: network_state_(WebKit::WebMediaPlayer::Empty),
ready_state_(WebKit::WebMediaPlayer::HaveNothing),
main_loop_(NULL),
filter_collection_(collection),
pipeline_(NULL),
- pipeline_thread_("PipelineThread"),
+ message_loop_factory_(message_loop_factory),
paused_(true),
seeking_(false),
playback_rate_(0.0f),
@@ -247,13 +248,14 @@ bool WebMediaPlayerImpl::Initialize(
WebKit::WebFrame* frame,
bool use_simple_data_source,
scoped_refptr<WebVideoRenderer> web_video_renderer) {
- // Create the pipeline and its thread.
- if (!pipeline_thread_.Start()) {
+ MessageLoop* pipeline_message_loop =
+ message_loop_factory_->GetMessageLoop("PipelineThread");
+ if (!pipeline_message_loop) {
NOTREACHED() << "Could not start PipelineThread";
return false;
}
- pipeline_ = new media::PipelineImpl(pipeline_thread_.message_loop());
+ pipeline_ = new media::PipelineImpl(pipeline_message_loop);
// Also we want to be notified of |main_loop_| destruction.
main_loop_->AddDestructionObserver(this);
@@ -290,9 +292,12 @@ bool WebMediaPlayerImpl::Initialize(
}
// Add in the default filter factories.
- filter_collection_->AddDemuxer(new media::FFmpegDemuxer());
- filter_collection_->AddAudioDecoder(new media::FFmpegAudioDecoder());
- filter_collection_->AddVideoDecoder(new media::FFmpegVideoDecoder(NULL));
+ filter_collection_->AddDemuxer(new media::FFmpegDemuxer(
+ message_loop_factory_->GetMessageLoop("DemuxThread")));
+ filter_collection_->AddAudioDecoder(new media::FFmpegAudioDecoder(
+ message_loop_factory_->GetMessageLoop("AudioDecoderThread")));
+ filter_collection_->AddVideoDecoder(new media::FFmpegVideoDecoder(
+ message_loop_factory_->GetMessageLoop("VideoDecoderThread"), NULL));
filter_collection_->AddAudioRenderer(new media::NullAudioRenderer());
return true;
@@ -794,9 +799,10 @@ void WebMediaPlayerImpl::Destroy() {
pipeline_->Stop(NewCallback(this,
&WebMediaPlayerImpl::PipelineStoppedCallback));
pipeline_stopped_.Wait();
- pipeline_thread_.Stop();
}
+ message_loop_factory_.reset();
+
// And then detach the proxy, it may live on the render thread for a little
// longer until all the tasks are finished.
if (proxy_) {
« no previous file with comments | « webkit/glue/webmediaplayer_impl.h ('k') | webkit/support/webkit_support.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698