diff options
Diffstat (limited to 'chrome/renderer/media/ipc_video_renderer.cc')
-rw-r--r-- | chrome/renderer/media/ipc_video_renderer.cc | 10 |
1 files changed, 7 insertions, 3 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; + } } |