| Index: services/ui/surfaces/display_compositor.cc
|
| diff --git a/services/ui/surfaces/display_compositor.cc b/services/ui/surfaces/display_compositor.cc
|
| index b022b427513302d476642d788cae236145c217c2..2da6ae9f30e1ffca0b60af92bbc233ff0ad4ea42 100644
|
| --- a/services/ui/surfaces/display_compositor.cc
|
| +++ b/services/ui/surfaces/display_compositor.cc
|
| @@ -17,6 +17,7 @@
|
| #include "cc/surfaces/surface.h"
|
| #include "components/display_compositor/gpu_display_compositor_frame_sink.h"
|
| #include "components/display_compositor/gpu_offscreen_compositor_frame_sink.h"
|
| +#include "components/display_compositor/offscreen_canvas_compositor_frame_sink.h"
|
| #include "gpu/command_buffer/client/shared_memory_limits.h"
|
| #include "gpu/ipc/gpu_in_process_thread_service.h"
|
| #include "mojo/public/cpp/bindings/strong_binding.h"
|
| @@ -44,10 +45,19 @@ DisplayCompositor::DisplayCompositor(
|
| binding_(this, std::move(request)) {
|
| manager_.AddObserver(this);
|
| }
|
| +DisplayCompositor::DisplayCompositor(
|
| + cc::mojom::DisplayCompositorRequest request,
|
| + cc::SurfaceManager* surfacemanager)
|
| + : manager_of_system_(surfacemanager), binding_(this, std::move(request)) {
|
| + if (manager_of_system_)
|
| + manager_of_system_->AddObserver(this);
|
| +}
|
|
|
| DisplayCompositor::~DisplayCompositor() {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| manager_.RemoveObserver(this);
|
| + if (manager_of_system_)
|
| + manager_of_system_->RemoveObserver(this);
|
| }
|
|
|
| void DisplayCompositor::OnClientConnectionLost(
|
| @@ -108,6 +118,19 @@ void DisplayCompositor::CreateOffscreenCompositorFrameSink(
|
| std::move(private_request), std::move(client));
|
| }
|
|
|
| +void DisplayCompositor::CreateOffscreenCanvasCompositorFrameSink(
|
| + const cc::FrameSinkId& frame_sink_id,
|
| + cc::mojom::MojoCompositorFrameSinkRequest request,
|
| + cc::mojom::MojoCompositorFrameSinkClientPtr client) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + DCHECK_EQ(0u, compositor_frame_sinks_.count(frame_sink_id));
|
| +
|
| + compositor_frame_sinks_[frame_sink_id] =
|
| + base::MakeUnique<display_compositor::OffscreenCanvasCompositorFrameSink>(
|
| + this, manager_of_system_, frame_sink_id, std::move(request),
|
| + std::move(client));
|
| +}
|
| +
|
| std::unique_ptr<cc::Display> DisplayCompositor::CreateDisplay(
|
| const cc::FrameSinkId& frame_sink_id,
|
| gpu::SurfaceHandle surface_handle,
|
|
|