// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "content/public/browser/gpu_client.h" #include "content/browser/gpu/browser_gpu_client_delegate.h" #include "content/common/child_process_host_impl.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" namespace content { std::unique_ptr CreateGpuClient( mojo::PendingReceiver receiver, viz::GpuClient::ConnectionErrorHandlerClosure connection_error_handler) { const int client_id = ChildProcessHostImpl::GenerateChildProcessUniqueId(); const uint64_t client_tracing_id = ChildProcessHostImpl::ChildProcessUniqueIdToTracingProcessId(client_id); auto task_runner = GetUIThreadTaskRunner({}); std::unique_ptr gpu_client( new viz::GpuClient( std::make_unique(), client_id, client_tracing_id, task_runner), base::OnTaskRunnerDeleter(task_runner)); gpu_client->SetConnectionErrorHandler(std::move(connection_error_handler)); task_runner->PostTask( FROM_HERE, base::BindOnce(&viz::GpuClient::Add, gpu_client->GetWeakPtr(), std::move(receiver))); return gpu_client; } } // namespace content