Index: content/browser/gpu/browser_gpu_channel_host_factory.cc |
diff --git a/content/browser/gpu/browser_gpu_channel_host_factory.cc b/content/browser/gpu/browser_gpu_channel_host_factory.cc |
index 9edb9677c56abc2b4801d5aa62193d362236b95c..4325c066269d8965667225b9b2176ec1f6867d83 100644 |
--- a/content/browser/gpu/browser_gpu_channel_host_factory.cc |
+++ b/content/browser/gpu/browser_gpu_channel_host_factory.cc |
@@ -295,6 +295,10 @@ BrowserGpuChannelHostFactory::~BrowserGpuChannelHostFactory() { |
for (size_t n = 0; n < established_callbacks_.size(); n++) |
established_callbacks_[n].Run(); |
shutdown_event_->Signal(); |
+ if (gpu_channel_) { |
+ gpu_channel_->DestroyChannel(); |
+ gpu_channel_ = NULL; |
+ } |
} |
bool BrowserGpuChannelHostFactory::IsMainThread() { |
@@ -396,6 +400,7 @@ void BrowserGpuChannelHostFactory::EstablishGpuChannel( |
if (gpu_channel_.get() && gpu_channel_->IsLost()) { |
DCHECK(!pending_request_.get()); |
// Recreate the channel if it has been lost. |
+ gpu_channel_->DestroyChannel(); |
gpu_channel_ = NULL; |
} |