diff options
author | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-06 20:51:24 +0000 |
---|---|---|
committer | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-06 20:51:24 +0000 |
commit | ed2c9c3d1e75a88c273020be59820d1735af39f0 (patch) | |
tree | c181d5b4601b8fb6dfc65b73523f3e1f101a892d /webkit | |
parent | eab70329b5a5cb9750849a4ac4cd6fa671c5be81 (diff) | |
download | chromium_src-ed2c9c3d1e75a88c273020be59820d1735af39f0.zip chromium_src-ed2c9c3d1e75a88c273020be59820d1735af39f0.tar.gz chromium_src-ed2c9c3d1e75a88c273020be59820d1735af39f0.tar.bz2 |
Update WebMediaPlayerProxy to use MessageLoopProxy.
Seeing as it's a ref-counted proxy object that can outlive the message loops that it is proxying between it should be using a MessageLoopProxy instead of a raw MessageLoop pointer.
BUG=111106
Review URL: https://chromiumcodereview.appspot.com/9330005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@120606 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/media/webmediaplayer_impl.cc | 3 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_proxy.cc | 31 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_proxy.h | 12 |
3 files changed, 24 insertions, 22 deletions
diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc index da28423..652c66e 100644 --- a/webkit/media/webmediaplayer_impl.cc +++ b/webkit/media/webmediaplayer_impl.cc @@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/callback.h" #include "base/command_line.h" +#include "base/message_loop_proxy.h" #include "base/metrics/histogram.h" #include "media/base/filter_collection.h" #include "media/base/limits.h" @@ -114,7 +115,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( pending_seek_(false), pending_seek_seconds_(0.0f), client_(client), - proxy_(new WebMediaPlayerProxy(main_loop_, this)), + proxy_(new WebMediaPlayerProxy(main_loop_->message_loop_proxy(), this)), delegate_(delegate), media_stream_client_(media_stream_client), media_log_(media_log), diff --git a/webkit/media/webmediaplayer_proxy.cc b/webkit/media/webmediaplayer_proxy.cc index 4a2d929..be4c8a7 100644 --- a/webkit/media/webmediaplayer_proxy.cc +++ b/webkit/media/webmediaplayer_proxy.cc @@ -6,7 +6,7 @@ #include "base/bind.h" #include "base/logging.h" -#include "base/message_loop.h" +#include "base/message_loop_proxy.h" #include "media/base/pipeline_status.h" #include "media/filters/chunk_demuxer.h" #include "media/filters/video_renderer_base.h" @@ -22,8 +22,9 @@ namespace webkit_media { // queue but gives up a pretty good latency on repaint. static const int kMaxOutstandingRepaints = 50; -WebMediaPlayerProxy::WebMediaPlayerProxy(MessageLoop* render_loop, - WebMediaPlayerImpl* webmediaplayer) +WebMediaPlayerProxy::WebMediaPlayerProxy( + const scoped_refptr<base::MessageLoopProxy>& render_loop, + WebMediaPlayerImpl* webmediaplayer) : render_loop_(render_loop), webmediaplayer_(webmediaplayer), outstanding_repaints_(0) { @@ -51,7 +52,7 @@ void WebMediaPlayerProxy::SetOpaque(bool opaque) { } void WebMediaPlayerProxy::Paint(SkCanvas* canvas, const gfx::Rect& dest_rect) { - DCHECK(MessageLoop::current() == render_loop_); + DCHECK(render_loop_->BelongsToCurrentThread()); if (frame_provider_) { scoped_refptr<media::VideoFrame> video_frame; frame_provider_->GetCurrentFrame(&video_frame); @@ -61,20 +62,20 @@ void WebMediaPlayerProxy::Paint(SkCanvas* canvas, const gfx::Rect& dest_rect) { } bool WebMediaPlayerProxy::HasSingleOrigin() { - DCHECK(MessageLoop::current() == render_loop_); + DCHECK(render_loop_->BelongsToCurrentThread()); if (data_source_) return data_source_->HasSingleOrigin(); return true; } void WebMediaPlayerProxy::AbortDataSource() { - DCHECK(MessageLoop::current() == render_loop_); + DCHECK(render_loop_->BelongsToCurrentThread()); if (data_source_) data_source_->Abort(); } void WebMediaPlayerProxy::Detach() { - DCHECK(MessageLoop::current() == render_loop_); + DCHECK(render_loop_->BelongsToCurrentThread()); webmediaplayer_ = NULL; data_source_ = NULL; frame_provider_ = NULL; @@ -108,7 +109,7 @@ void WebMediaPlayerProxy::NetworkEventCallback(NetworkEvent type) { } void WebMediaPlayerProxy::RepaintTask() { - DCHECK(MessageLoop::current() == render_loop_); + DCHECK(render_loop_->BelongsToCurrentThread()); { base::AutoLock auto_lock(lock_); --outstanding_repaints_; @@ -120,37 +121,37 @@ void WebMediaPlayerProxy::RepaintTask() { } void WebMediaPlayerProxy::PipelineInitializationTask(PipelineStatus status) { - DCHECK(MessageLoop::current() == render_loop_); + DCHECK(render_loop_->BelongsToCurrentThread()); if (webmediaplayer_) webmediaplayer_->OnPipelineInitialize(status); } void WebMediaPlayerProxy::PipelineSeekTask(PipelineStatus status) { - DCHECK(MessageLoop::current() == render_loop_); + DCHECK(render_loop_->BelongsToCurrentThread()); if (webmediaplayer_) webmediaplayer_->OnPipelineSeek(status); } void WebMediaPlayerProxy::PipelineEndedTask(PipelineStatus status) { - DCHECK(MessageLoop::current() == render_loop_); + DCHECK(render_loop_->BelongsToCurrentThread()); if (webmediaplayer_) webmediaplayer_->OnPipelineEnded(status); } void WebMediaPlayerProxy::PipelineErrorTask(PipelineStatus error) { - DCHECK(MessageLoop::current() == render_loop_); + DCHECK(render_loop_->BelongsToCurrentThread()); if (webmediaplayer_) webmediaplayer_->OnPipelineError(error); } void WebMediaPlayerProxy::NetworkEventTask(NetworkEvent type) { - DCHECK(MessageLoop::current() == render_loop_); + DCHECK(render_loop_->BelongsToCurrentThread()); if (webmediaplayer_) webmediaplayer_->OnNetworkEvent(type); } void WebMediaPlayerProxy::SetOpaqueTask(bool opaque) { - DCHECK(MessageLoop::current() == render_loop_); + DCHECK(render_loop_->BelongsToCurrentThread()); if (webmediaplayer_) webmediaplayer_->SetOpaque(opaque); } @@ -201,7 +202,7 @@ void WebMediaPlayerProxy::DemuxerShutdown() { void WebMediaPlayerProxy::DemuxerOpenedTask( const scoped_refptr<media::ChunkDemuxer>& demuxer) { - DCHECK(MessageLoop::current() == render_loop_); + DCHECK(render_loop_->BelongsToCurrentThread()); chunk_demuxer_ = demuxer; if (webmediaplayer_) webmediaplayer_->OnDemuxerOpened(); diff --git a/webkit/media/webmediaplayer_proxy.h b/webkit/media/webmediaplayer_proxy.h index da0ec50..c7e0929 100644 --- a/webkit/media/webmediaplayer_proxy.h +++ b/webkit/media/webmediaplayer_proxy.h @@ -14,9 +14,12 @@ #include "webkit/media/skcanvas_video_renderer.h" #include "webkit/media/web_data_source.h" -class MessageLoop; class SkCanvas; +namespace base { +class MessageLoopProxy; +} + namespace gfx { class Rect; } @@ -36,7 +39,7 @@ class WebMediaPlayerProxy : public base::RefCountedThreadSafe<WebMediaPlayerProxy>, public media::ChunkDemuxerClient { public: - WebMediaPlayerProxy(MessageLoop* render_loop, + WebMediaPlayerProxy(const scoped_refptr<base::MessageLoopProxy>& render_loop, WebMediaPlayerImpl* webmediaplayer); const scoped_refptr<WebDataSource>& data_source() { return data_source_; @@ -83,9 +86,6 @@ class WebMediaPlayerProxy void DemuxerOpenedTask(const scoped_refptr<media::ChunkDemuxer>& demuxer); void DemuxerClosedTask(); - // Returns the message loop used by the proxy. - MessageLoop* message_loop() { return render_loop_; } - private: friend class base::RefCountedThreadSafe<WebMediaPlayerProxy>; virtual ~WebMediaPlayerProxy(); @@ -113,7 +113,7 @@ class WebMediaPlayerProxy void SetOpaqueTask(bool opaque); // The render message loop where WebKit lives. - MessageLoop* render_loop_; + scoped_refptr<base::MessageLoopProxy> render_loop_; WebMediaPlayerImpl* webmediaplayer_; scoped_refptr<WebDataSource> data_source_; |