Chromium Code Reviews| 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 7a3f339affb5f9a4bfbca5c99731a70f8887da40..2e274e31b34846f65dfd94d31e7927c69bec45bd 100644 |
| --- a/content/browser/gpu/browser_gpu_channel_host_factory.cc |
| +++ b/content/browser/gpu/browser_gpu_channel_host_factory.cc |
| @@ -251,6 +251,9 @@ BrowserGpuChannelHostFactory::BrowserGpuChannelHostFactory() |
| BrowserGpuChannelHostFactory::~BrowserGpuChannelHostFactory() { |
| DCHECK(IsMainThread()); |
| + DCHECK(!in_shutdown_); |
| + |
| + in_shutdown_ = true; |
| if (pending_request_.get()) |
| pending_request_->Cancel(); |
| for (size_t n = 0; n < established_callbacks_.size(); n++) |
| @@ -282,6 +285,11 @@ BrowserGpuChannelHostFactory::AllocateSharedMemory(size_t size) { |
| void BrowserGpuChannelHostFactory::EstablishGpuChannel( |
| const gpu::GpuChannelEstablishedCallback& callback) { |
| DCHECK(!service_manager::ServiceManagerIsRemote()); |
| + |
| + // Don't queue any more requests if the factory is shutting down. |
| + if (in_shutdown_) |
|
boliu
2017/02/10 22:23:02
Hmm, I guess this is ok. But how hard is it to jus
Khushal
2017/02/10 22:42:39
Another thought was to set |instance_| to null in
boliu
2017/02/10 22:45:18
I'm actually worried about accidental infinite loo
Khushal
2017/02/10 22:51:30
Maye be we should always post to the message loop
boliu
2017/02/10 23:05:22
All depends on what happens in those callbacks tod
Khushal
2017/02/10 23:24:30
I had actually looked around when thinking about p
Khushal
2017/02/11 02:10:22
So I think the simplest solution would be to just
Khushal
2017/02/13 21:07:13
Done.
|
| + return; |
| + |
| if (gpu_channel_.get() && gpu_channel_->IsLost()) { |
| DCHECK(!pending_request_.get()); |
| // Recreate the channel if it has been lost. |