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

Unified Diff: webkit/media/webmediaplayer_impl.cc

Issue 10855188: media::BindToLoop() is born, with example uses to slim down WebMediaPlayerProxy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased 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/media.gyp ('k') | webkit/media/webmediaplayer_proxy.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/media/webmediaplayer_impl.cc
diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc
index 73d90729432c0f03f9a1104736ff623a76374050..e07b0d4c3cdcf42d2a88e7603b9c4a5e16aa521f 100644
--- a/webkit/media/webmediaplayer_impl.cc
+++ b/webkit/media/webmediaplayer_impl.cc
@@ -16,6 +16,7 @@
#include "base/string_number_conversions.h"
#include "base/synchronization/waitable_event.h"
#include "media/audio/null_audio_sink.h"
+#include "media/base/bind_to_loop.h"
#include "media/base/filter_collection.h"
#include "media/base/limits.h"
#include "media/base/media_log.h"
@@ -90,6 +91,10 @@ COMPILE_ASSERT_MATCHING_ENUM(Anonymous);
COMPILE_ASSERT_MATCHING_ENUM(UseCredentials);
#undef COMPILE_ASSERT_MATCHING_ENUM
+#define BIND_TO_RENDER_LOOP(function) \
+ media::BindToLoop(main_loop_->message_loop_proxy(), base::Bind( \
+ function, AsWeakPtr()))
+
static WebKit::WebTimeRanges ConvertToWebTimeRanges(
const media::Ranges<base::TimeDelta>& ranges) {
WebKit::WebTimeRanges result(ranges.size());
@@ -160,7 +165,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
scoped_refptr<media::VideoRendererBase> video_renderer =
new media::VideoRendererBase(
base::Bind(&WebMediaPlayerProxy::Repaint, proxy_),
- base::Bind(&WebMediaPlayerProxy::SetOpaque, proxy_.get()),
+ BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::SetOpaque),
true);
filter_collection_->AddVideoRenderer(video_renderer);
proxy_->set_frame_provider(video_renderer);
@@ -257,12 +262,12 @@ void WebMediaPlayerImpl::load(const WebKit::WebURL& url, CORSMode cors_mode) {
proxy_->set_data_source(
new BufferedDataSource(main_loop_, frame_, media_log_,
base::Bind(&WebMediaPlayerImpl::NotifyDownloading,
- base::Unretained(this))));
+ AsWeakPtr())));
proxy_->data_source()->Initialize(
url, static_cast<BufferedResourceLoader::CORSMode>(cors_mode),
base::Bind(
&WebMediaPlayerImpl::DataSourceInitialized,
- base::Unretained(this), gurl));
+ AsWeakPtr(), gurl));
is_local_source_ = !gurl.SchemeIs("http") && !gurl.SchemeIs("https");
@@ -336,8 +341,7 @@ void WebMediaPlayerImpl::seek(float seconds) {
// Kick off the asynchronous seek!
pipeline_->Seek(
seek_time,
- base::Bind(&WebMediaPlayerProxy::PipelineSeekCallback,
- proxy_.get()));
+ BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineSeek));
}
void WebMediaPlayerImpl::setEndTime(float seconds) {
@@ -969,11 +973,10 @@ void WebMediaPlayerImpl::StartPipeline() {
starting_ = true;
pipeline_->Start(
filter_collection_.Pass(),
- base::Bind(&WebMediaPlayerProxy::PipelineEndedCallback, proxy_.get()),
- base::Bind(&WebMediaPlayerProxy::PipelineErrorCallback, proxy_.get()),
- base::Bind(&WebMediaPlayerProxy::PipelineSeekCallback, proxy_.get()),
- base::Bind(&WebMediaPlayerProxy::PipelineBufferingStateCallback,
- proxy_.get()));
+ BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineEnded),
+ BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineError),
+ BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineSeek),
+ BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineBufferingState));
}
void WebMediaPlayerImpl::SetNetworkState(WebMediaPlayer::NetworkState state) {
« no previous file with comments | « media/media.gyp ('k') | webkit/media/webmediaplayer_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698