Chromium Code Reviews| Index: services/ui/surfaces/display_compositor.cc |
| diff --git a/services/ui/surfaces/display_compositor.cc b/services/ui/surfaces/display_compositor.cc |
| index ffa022361709f1b6c81c83281b93532cbf8dbe79..f0c825f74316e893ceeeee27d3a7759925b3b2f1 100644 |
| --- a/services/ui/surfaces/display_compositor.cc |
| +++ b/services/ui/surfaces/display_compositor.cc |
| @@ -92,31 +92,31 @@ void DisplayCompositor::OnCompositorFrameSinkPrivateConnectionLost( |
| compositor_frame_sinks_.erase(frame_sink_id); |
| } |
| -void DisplayCompositor::CreateCompositorFrameSink( |
| +void DisplayCompositor::CreateDisplayCompositorFrameSink( |
| const cc::FrameSinkId& frame_sink_id, |
| gpu::SurfaceHandle surface_handle, |
| cc::mojom::MojoCompositorFrameSinkRequest request, |
| cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request, |
| cc::mojom::MojoCompositorFrameSinkClientPtr client) { |
| - DCHECK(thread_checker_.CalledOnValidThread()); |
|
Fady Samuel
2016/12/14 17:19:01
I would leave this here too because we're doing wo
Alex Z.
2016/12/14 18:44:12
Done.
|
| - // We cannot create more than one CompositorFrameSink with a given |
| - // |frame_sink_id|. |
| - DCHECK_EQ(0u, compositor_frame_sinks_.count(frame_sink_id)); |
| - |
| - std::unique_ptr<cc::Display> display; |
| - std::unique_ptr<cc::SyntheticBeginFrameSource> begin_frame_source; |
| - if (surface_handle != gpu::kNullSurfaceHandle) { |
| - begin_frame_source.reset(new cc::DelayBasedBeginFrameSource( |
| - base::MakeUnique<cc::DelayBasedTimeSource>(task_runner_.get()))); |
| - display = |
| - CreateDisplay(frame_sink_id, surface_handle, begin_frame_source.get()); |
| - } |
| + DCHECK_NE(surface_handle, gpu::kNullSurfaceHandle); |
| + std::unique_ptr<cc::SyntheticBeginFrameSource> begin_frame_source( |
| + new cc::DelayBasedBeginFrameSource( |
| + base::MakeUnique<cc::DelayBasedTimeSource>(task_runner_.get()))); |
| + CreateCompositorFrameSinkInternal( |
| + frame_sink_id, surface_handle, |
| + CreateDisplay(frame_sink_id, surface_handle, begin_frame_source.get()), |
| + std::move(begin_frame_source), std::move(request), |
| + std::move(private_request), std::move(client)); |
| +} |
| - compositor_frame_sinks_[frame_sink_id] = |
| - base::MakeUnique<GpuCompositorFrameSink>( |
| - this, frame_sink_id, std::move(display), |
| - std::move(begin_frame_source), std::move(request), |
| - std::move(private_request), std::move(client)); |
| +void DisplayCompositor::CreateOffscreenCompositorFrameSink( |
| + const cc::FrameSinkId& frame_sink_id, |
| + cc::mojom::MojoCompositorFrameSinkRequest request, |
| + cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request, |
| + cc::mojom::MojoCompositorFrameSinkClientPtr client) { |
| + CreateCompositorFrameSinkInternal( |
| + frame_sink_id, gpu::kNullSurfaceHandle, nullptr, nullptr, |
| + std::move(request), std::move(private_request), std::move(client)); |
| } |
| void DisplayCompositor::AddSurfaceReference(const cc::SurfaceReference& ref) { |
| @@ -218,6 +218,26 @@ std::unique_ptr<cc::Display> DisplayCompositor::CreateDisplay( |
| base::MakeUnique<cc::TextureMailboxDeleter>(task_runner_.get())); |
| } |
| +void DisplayCompositor::CreateCompositorFrameSinkInternal( |
| + const cc::FrameSinkId& frame_sink_id, |
| + gpu::SurfaceHandle surface_handle, |
| + std::unique_ptr<cc::Display> display, |
| + std::unique_ptr<cc::SyntheticBeginFrameSource> begin_frame_source, |
| + cc::mojom::MojoCompositorFrameSinkRequest request, |
| + cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request, |
| + cc::mojom::MojoCompositorFrameSinkClientPtr client) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + // We cannot create more than one CompositorFrameSink with a given |
| + // |frame_sink_id|. |
| + DCHECK_EQ(0u, compositor_frame_sinks_.count(frame_sink_id)); |
| + |
| + compositor_frame_sinks_[frame_sink_id] = |
| + base::MakeUnique<GpuCompositorFrameSink>( |
| + this, frame_sink_id, std::move(display), |
| + std::move(begin_frame_source), std::move(request), |
| + std::move(private_request), std::move(client)); |
| +} |
| + |
| const cc::SurfaceId& DisplayCompositor::GetRootSurfaceId() const { |
| return reference_manager_->GetRootSurfaceId(); |
| } |