summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authorscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-06 20:51:24 +0000
committerscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-06 20:51:24 +0000
commited2c9c3d1e75a88c273020be59820d1735af39f0 (patch)
treec181d5b4601b8fb6dfc65b73523f3e1f101a892d /webkit
parenteab70329b5a5cb9750849a4ac4cd6fa671c5be81 (diff)
downloadchromium_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.cc3
-rw-r--r--webkit/media/webmediaplayer_proxy.cc31
-rw-r--r--webkit/media/webmediaplayer_proxy.h12
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_;