diff options
Diffstat (limited to 'chromium/ui/ozone/platform/scenic/scenic_gpu_host.cc')
-rw-r--r-- | chromium/ui/ozone/platform/scenic/scenic_gpu_host.cc | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/chromium/ui/ozone/platform/scenic/scenic_gpu_host.cc b/chromium/ui/ozone/platform/scenic/scenic_gpu_host.cc index c01c57f38b4..63e9e64199a 100644 --- a/chromium/ui/ozone/platform/scenic/scenic_gpu_host.cc +++ b/chromium/ui/ozone/platform/scenic/scenic_gpu_host.cc @@ -80,17 +80,20 @@ void ScenicGpuHost::OnChannelDestroyed(int host_id) {} void ScenicGpuHost::OnGpuServiceLaunched( int host_id, scoped_refptr<base::SingleThreadTaskRunner> ui_runner, - scoped_refptr<base::SingleThreadTaskRunner> io_runner, + scoped_refptr<base::SingleThreadTaskRunner> process_host_runner, GpuHostBindInterfaceCallback binder, GpuHostTerminateCallback terminate_callback) { - DCHECK_CALLED_ON_VALID_THREAD(io_thread_checker_); - mojo::PendingRemote<mojom::ScenicGpuService> scenic_gpu_service; BindInterface(scenic_gpu_service.InitWithNewPipeAndPassReceiver(), binder); - ui_thread_runner_->PostTask( - FROM_HERE, base::BindOnce(&ScenicGpuHost::OnGpuServiceLaunchedOnUI, - weak_ptr_factory_.GetWeakPtr(), - std::move(scenic_gpu_service))); + if (ui_runner->BelongsToCurrentThread()) { + OnGpuServiceLaunchedOnUI(std::move(scenic_gpu_service)); + } else { + DCHECK_CALLED_ON_VALID_THREAD(io_thread_checker_); + ui_thread_runner_->PostTask( + FROM_HERE, base::BindOnce(&ScenicGpuHost::OnGpuServiceLaunchedOnUI, + weak_ptr_factory_.GetWeakPtr(), + std::move(scenic_gpu_service))); + } } void ScenicGpuHost::OnGpuServiceLaunchedOnUI( |