summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/media/ipc_video_renderer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer/media/ipc_video_renderer.cc')
-rw-r--r--chrome/renderer/media/ipc_video_renderer.cc10
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;
+ }
}