summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorwjia@google.com <wjia@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-24 19:15:07 +0000
committerwjia@google.com <wjia@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-24 19:15:07 +0000
commit5e83826af14858fca1ebac8281afa75107281e7b (patch)
tree467fbad219ff625270ebe0455dabe4459f1c7e36 /chrome
parentcc2de439d0fd34aac593b1fabc40f0626c5848e1 (diff)
downloadchromium_src-5e83826af14858fca1ebac8281afa75107281e7b.zip
chromium_src-5e83826af14858fca1ebac8281afa75107281e7b.tar.gz
chromium_src-5e83826af14858fca1ebac8281afa75107281e7b.tar.bz2
1. remove initial rendering lag time for egl image decoding path
2. put all GLES operations in one thread BUG=none TEST=dev platform and desktop Review URL: http://codereview.chromium.org/2836019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50749 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/renderer/media/ipc_video_renderer.cc10
-rw-r--r--chrome/renderer/media/ipc_video_renderer.h4
2 files changed, 9 insertions, 5 deletions
diff --git a/chrome/renderer/media/ipc_video_renderer.cc b/chrome/renderer/media/ipc_video_renderer.cc
index 843869c..aa234ff 100644
--- a/chrome/renderer/media/ipc_video_renderer.cc
+++ b/chrome/renderer/media/ipc_video_renderer.cc
@@ -52,11 +52,11 @@ bool IPCVideoRenderer::OnInitialize(media::VideoDecoder* decoder) {
return true;
}
-void IPCVideoRenderer::OnStop() {
+void IPCVideoRenderer::OnStop(media::FilterCallback* callback) {
stopped_.Signal();
proxy_->message_loop()->PostTask(FROM_HERE,
- NewRunnableMethod(this, &IPCVideoRenderer::DoDestroyVideo));
+ NewRunnableMethod(this, &IPCVideoRenderer::DoDestroyVideo, callback));
}
void IPCVideoRenderer::OnFrameAvailable() {
@@ -160,7 +160,7 @@ void IPCVideoRenderer::DoUpdateVideo() {
video_rect_));
}
-void IPCVideoRenderer::DoDestroyVideo() {
+void IPCVideoRenderer::DoDestroyVideo(media::FilterCallback* callback) {
DCHECK(MessageLoop::current() == proxy_->message_loop());
// We shouldn't receive any more messages after the browser receives this.
@@ -169,4 +169,8 @@ void IPCVideoRenderer::DoDestroyVideo() {
// Detach ourselves from the proxy.
proxy_->SetVideoRenderer(NULL);
proxy_ = NULL;
+ if (callback) {
+ callback->Run();
+ delete callback;
+ }
}
diff --git a/chrome/renderer/media/ipc_video_renderer.h b/chrome/renderer/media/ipc_video_renderer.h
index 070166b..943e0c9 100644
--- a/chrome/renderer/media/ipc_video_renderer.h
+++ b/chrome/renderer/media/ipc_video_renderer.h
@@ -59,7 +59,7 @@ class IPCVideoRenderer : public webkit_glue::WebVideoRenderer {
protected:
// VideoRendererBase implementation.
virtual bool OnInitialize(media::VideoDecoder* decoder);
- virtual void OnStop();
+ virtual void OnStop(media::FilterCallback* callback);
virtual void OnFrameAvailable();
private:
@@ -80,7 +80,7 @@ class IPCVideoRenderer : public webkit_glue::WebVideoRenderer {
void DoUpdateVideo();
// Handles destroying the video on the render thread.
- void DoDestroyVideo();
+ void DoDestroyVideo(media::FilterCallback* callback);
// Pointer to our parent object that is called to request repaints.
scoped_refptr<webkit_glue::WebMediaPlayerImpl::Proxy> proxy_;