Index: content/common/gpu/client/command_buffer_proxy_impl.cc |
diff --git a/content/common/gpu/client/command_buffer_proxy_impl.cc b/content/common/gpu/client/command_buffer_proxy_impl.cc |
index 80e0b1c9f6f88f67fbd3faf7fd1a137e09865b91..2d6a168500a728209d0ea53d940f4c2667303567 100644 |
--- a/content/common/gpu/client/command_buffer_proxy_impl.cc |
+++ b/content/common/gpu/client/command_buffer_proxy_impl.cc |
@@ -46,6 +46,10 @@ CommandBufferProxyImpl::~CommandBufferProxyImpl() { |
delete it->second.shared_memory; |
it->second.shared_memory = NULL; |
} |
+ for (Decoders::iterator it = video_decoder_hosts_.begin(); |
+ it != video_decoder_hosts_.end(); ++it) { |
+ it->second->Destroy(); |
+ } |
} |
bool CommandBufferProxyImpl::OnMessageReceived(const IPC::Message& message) { |
@@ -483,7 +487,7 @@ void CommandBufferProxyImpl::SetNotifyRepaintTask(const base::Closure& task) { |
notify_repaint_task_ = task; |
} |
-scoped_refptr<GpuVideoDecodeAcceleratorHost> |
+GpuVideoDecodeAcceleratorHost* |
CommandBufferProxyImpl::CreateVideoDecoder( |
media::VideoCodecProfile profile, |
media::VideoDecodeAccelerator::Client* client) { |
@@ -499,13 +503,13 @@ CommandBufferProxyImpl::CreateVideoDecoder( |
return NULL; |
} |
- scoped_refptr<GpuVideoDecodeAcceleratorHost> decoder_host = |
+ GpuVideoDecodeAcceleratorHost* decoder_host = |
new GpuVideoDecodeAcceleratorHost(channel_, decoder_route_id, client); |
bool inserted = video_decoder_hosts_.insert(std::make_pair( |
decoder_route_id, decoder_host)).second; |
DCHECK(inserted); |
- channel_->AddRoute(decoder_route_id, decoder_host->AsWeakPtr()); |
+ channel_->AddRoute(decoder_route_id, base::AsWeakPtr(decoder_host)); |
return decoder_host; |
} |