Index: webkit/glue/webmediaplayer_impl.cc |
diff --git a/webkit/glue/webmediaplayer_impl.cc b/webkit/glue/webmediaplayer_impl.cc |
index bbf6172ff394afe82449e7a1641fe2667f072646..58489cc95cbca1509595964ce77180a0ba43f26d 100644 |
--- a/webkit/glue/webmediaplayer_impl.cc |
+++ b/webkit/glue/webmediaplayer_impl.cc |
@@ -225,28 +225,32 @@ void WebMediaPlayerImpl::Proxy::PutCurrentFrame( |
WebMediaPlayerImpl::WebMediaPlayerImpl( |
WebKit::WebMediaPlayerClient* client, |
- media::MediaFilterCollection* collection, |
- MediaResourceLoaderBridgeFactory* bridge_factory_simple, |
- MediaResourceLoaderBridgeFactory* bridge_factory_buffered, |
- bool use_simple_data_source, |
- scoped_refptr<WebVideoRenderer> web_video_renderer) |
+ media::MediaFilterCollection* collection) |
: network_state_(WebKit::WebMediaPlayer::Empty), |
ready_state_(WebKit::WebMediaPlayer::HaveNothing), |
main_loop_(NULL), |
filter_collection_(collection), |
+ pipeline_(NULL), |
pipeline_thread_("PipelineThread"), |
paused_(true), |
playback_rate_(0.0f), |
client_(client), |
+ proxy_(NULL), |
pipeline_stopped_(false, false) { |
// Saves the current message loop. |
DCHECK(!main_loop_); |
main_loop_ = MessageLoop::current(); |
+} |
+bool WebMediaPlayerImpl::Initialize( |
+ MediaResourceLoaderBridgeFactory* bridge_factory_simple, |
+ MediaResourceLoaderBridgeFactory* bridge_factory_buffered, |
+ bool use_simple_data_source, |
+ scoped_refptr<WebVideoRenderer> web_video_renderer) { |
// Create the pipeline and its thread. |
if (!pipeline_thread_.Start()) { |
NOTREACHED() << "Could not start PipelineThread"; |
- return; |
+ return false; |
} |
pipeline_ = new media::PipelineImpl(pipeline_thread_.message_loop()); |
@@ -290,6 +294,8 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( |
filter_collection_->AddAudioDecoder(new media::FFmpegAudioDecoder()); |
filter_collection_->AddVideoDecoder(new media::FFmpegVideoDecoder(NULL)); |
filter_collection_->AddAudioRenderer(new media::NullAudioRenderer()); |
+ |
+ return true; |
} |
WebMediaPlayerImpl::~WebMediaPlayerImpl() { |
@@ -776,10 +782,12 @@ void WebMediaPlayerImpl::Destroy() { |
// Make sure to kill the pipeline so there's no more media threads running. |
// Note: stopping the pipeline might block for a long time. |
- pipeline_->Stop(NewCallback(this, |
- &WebMediaPlayerImpl::PipelineStoppedCallback)); |
- pipeline_stopped_.Wait(); |
- pipeline_thread_.Stop(); |
+ if (pipeline_) { |
+ pipeline_->Stop(NewCallback(this, |
+ &WebMediaPlayerImpl::PipelineStoppedCallback)); |
+ pipeline_stopped_.Wait(); |
+ pipeline_thread_.Stop(); |
+ } |
// And then detach the proxy, it may live on the render thread for a little |
// longer until all the tasks are finished. |