Index: services/ui/public/cpp/gpu/gpu.cc |
diff --git a/services/ui/public/cpp/gpu/gpu.cc b/services/ui/public/cpp/gpu/gpu.cc |
index 06238988ac9cfa9d4b02527955740b3cf5a3a21e..8634525475b22fab3be96ca8a462df75e081168d 100644 |
--- a/services/ui/public/cpp/gpu/gpu.cc |
+++ b/services/ui/public/cpp/gpu/gpu.cc |
@@ -46,6 +46,9 @@ Gpu::Gpu(service_manager::Connector* connector, |
Gpu::~Gpu() { |
DCHECK(IsMainThread()); |
+ DCHECK(!in_shutdown_); |
+ |
+ in_shutdown_ = true; |
for (const auto& callback : establish_callbacks_) |
callback.Run(nullptr); |
shutdown_event_.Signal(); |
@@ -90,6 +93,10 @@ scoped_refptr<cc::ContextProvider> Gpu::CreateContextProvider( |
void Gpu::EstablishGpuChannel( |
const gpu::GpuChannelEstablishedCallback& callback) { |
DCHECK(IsMainThread()); |
+ |
+ if (in_shutdown_) |
+ return; |
+ |
scoped_refptr<gpu::GpuChannelHost> channel = GetGpuChannel(); |
if (channel) { |
main_task_runner_->PostTask(FROM_HERE, |