diff options
author | wjia@google.com <wjia@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-24 19:15:07 +0000 |
---|---|---|
committer | wjia@google.com <wjia@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-24 19:15:07 +0000 |
commit | 5e83826af14858fca1ebac8281afa75107281e7b (patch) | |
tree | 467fbad219ff625270ebe0455dabe4459f1c7e36 /chrome | |
parent | cc2de439d0fd34aac593b1fabc40f0626c5848e1 (diff) | |
download | chromium_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.cc | 10 | ||||
-rw-r--r-- | chrome/renderer/media/ipc_video_renderer.h | 4 |
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_; |