| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chromecast/gpu/cast_content_gpu_client.h" |
| |
| #include "base/memory/ptr_util.h" |
| #include "base/task/single_thread_task_runner.h" |
| #include "components/viz/service/display/overlay_strategy_underlay_cast.h" |
| #include "content/public/child/child_thread.h" |
| |
| namespace chromecast { |
| namespace shell { |
| |
| CastContentGpuClient::CastContentGpuClient() = default; |
| CastContentGpuClient::~CastContentGpuClient() = default; |
| |
| // static |
| std::unique_ptr<CastContentGpuClient> CastContentGpuClient::Create() { |
| return base::WrapUnique(new CastContentGpuClient()); |
| } |
| |
| void CastContentGpuClient::PostCompositorThreadCreated( |
| base::SingleThreadTaskRunner* task_runner) { |
| DCHECK(task_runner); |
| mojo::PendingRemote<chromecast::media::mojom::VideoGeometrySetter> |
| video_geometry_setter; |
| content::ChildThread::Get()->BindHostReceiver( |
| video_geometry_setter.InitWithNewPipeAndPassReceiver()); |
| |
| task_runner->PostTask( |
| FROM_HERE, |
| base::BindOnce( |
| &viz::OverlayStrategyUnderlayCast::ConnectVideoGeometrySetter, |
| std::move(video_geometry_setter))); |
| } |
| |
| } // namespace shell |
| } // namespace chromecast |