Index: content/browser/gpu/browser_gpu_memory_buffer_manager.cc |
diff --git a/content/browser/gpu/browser_gpu_memory_buffer_manager.cc b/content/browser/gpu/browser_gpu_memory_buffer_manager.cc |
index 718c009e44346e6bd7a0928aa4678b5ceca77aef..fcd1a8d4e951afd81269df3b8e8d6a9b11958c06 100644 |
--- a/content/browser/gpu/browser_gpu_memory_buffer_manager.cc |
+++ b/content/browser/gpu/browser_gpu_memory_buffer_manager.cc |
@@ -257,6 +257,11 @@ BrowserGpuMemoryBufferManager::CreateGpuMemoryBufferFromHandle( |
"BrowserGpuMemoryBufferManager::CreateGpuMemoryBufferFromHandle"); |
base::ThreadRestrictions::ScopedAllowWait allow_wait; |
request.event.Wait(); |
+ if (!request.result) { |
+ GpuProcessHost* host = GpuProcessHost::FromID(gpu_host_id_); |
+ if (host) |
+ host->ForceShutdown(); |
+ } |
return std::move(request.result); |
} |
@@ -422,6 +427,11 @@ BrowserGpuMemoryBufferManager::AllocateGpuMemoryBufferForSurface( |
"BrowserGpuMemoryBufferManager::AllocateGpuMemoryBufferForSurface"); |
base::ThreadRestrictions::ScopedAllowWait allow_wait; |
request.event.Wait(); |
+ if (!request.result) { |
+ GpuProcessHost* host = GpuProcessHost::FromID(gpu_host_id_); |
+ if (host) |
+ host->ForceShutdown(); |
+ } |
return std::move(request.result); |
} |