Index: media/gpu/ipc/client/gpu_jpeg_decode_accelerator_host.cc |
diff --git a/media/gpu/ipc/client/gpu_jpeg_decode_accelerator_host.cc b/media/gpu/ipc/client/gpu_jpeg_decode_accelerator_host.cc |
index 1afe39c3db273df7c5e728c9d4cceb61e15e41f3..fca7a5b7741e500bcc18d6ebda152630076e6747 100644 |
--- a/media/gpu/ipc/client/gpu_jpeg_decode_accelerator_host.cc |
+++ b/media/gpu/ipc/client/gpu_jpeg_decode_accelerator_host.cc |
@@ -118,11 +118,14 @@ GpuJpegDecodeAcceleratorHost::~GpuJpegDecodeAcceleratorHost() { |
// routed to |receiver_| on IO thread. |
base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC, |
base::WaitableEvent::InitialState::NOT_SIGNALED); |
- io_task_runner_->PostTask(FROM_HERE, |
- base::Bind(&Receiver::InvalidateWeakPtr, |
- base::Unretained(receiver_.get()), |
- base::Unretained(&event))); |
- event.Wait(); |
+ bool task_expected_to_run = io_task_runner_->PostTask( |
+ FROM_HERE, base::Bind(&Receiver::InvalidateWeakPtr, |
+ base::Unretained(receiver_.get()), |
+ base::Unretained(&event))); |
+ // If the current call is happening during the browser shutdown, the |
+ // |io_task_runner_| may no longer be accepting tasks. |
+ if (task_expected_to_run) |
+ event.Wait(); |
} |
} |