Chromium Code Reviews| Index: services/ui/ws/server_window_compositor_frame_sink.h |
| diff --git a/services/ui/ws/server_window_compositor_frame_sink.h b/services/ui/ws/server_window_compositor_frame_sink.h |
| index 7160f2cc5e6eb767ab5c23c4fd666c2f350eddb2..a448e73b46a4e5cd09d53db693f0e2c8807c0f36 100644 |
| --- a/services/ui/ws/server_window_compositor_frame_sink.h |
| +++ b/services/ui/ws/server_window_compositor_frame_sink.h |
| @@ -10,6 +10,9 @@ |
| #include "base/macros.h" |
| #include "cc/ipc/compositor_frame.mojom.h" |
| #include "cc/ipc/mojo_compositor_frame_sink.mojom.h" |
| +#include "cc/output/context_provider.h" |
| +#include "cc/surfaces/display.h" |
| +#include "cc/surfaces/display_client.h" |
| #include "cc/surfaces/frame_sink_id.h" |
| #include "cc/surfaces/surface_factory.h" |
| #include "cc/surfaces/surface_factory_client.h" |
| @@ -17,8 +20,13 @@ |
| #include "cc/surfaces/surface_id_allocator.h" |
| #include "mojo/public/cpp/bindings/binding.h" |
| #include "services/ui/public/interfaces/window_tree.mojom.h" |
| +#include "services/ui/surfaces/surfaces_context_provider.h" |
| #include "services/ui/ws/ids.h" |
| +namespace gpu { |
| +class GpuMemoryBufferManager; |
| +} |
| + |
| namespace ui { |
| class DisplayCompositor; |
| @@ -31,11 +39,15 @@ class ServerWindowCompositorFrameSinkManager; |
| // Server side representation of a WindowSurface. |
| class ServerWindowCompositorFrameSink |
| : public cc::mojom::MojoCompositorFrameSink, |
| + public cc::DisplayClient, |
| public cc::SurfaceFactoryClient { |
| public: |
| ServerWindowCompositorFrameSink( |
| ServerWindowCompositorFrameSinkManager* manager, |
| const cc::FrameSinkId& frame_sink_id, |
| + gfx::AcceleratedWidget widget, |
| + gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, |
| + scoped_refptr<SurfacesContextProvider> context_provider, |
|
gab
2016/11/02 18:07:33
#include ref_counted.h
|
| cc::mojom::MojoCompositorFrameSinkRequest request, |
| cc::mojom::MojoCompositorFrameSinkClientPtr client); |
| @@ -46,17 +58,32 @@ class ServerWindowCompositorFrameSink |
| void SubmitCompositorFrame(cc::CompositorFrame frame) override; |
| private: |
| + void InitDisplay(gfx::AcceleratedWidget widget, |
| + gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, |
| + scoped_refptr<SurfacesContextProvider> context_provider); |
| + |
| void DidReceiveCompositorFrameAck(); |
| + // DisplayClient implementation. |
| + void DisplayOutputSurfaceLost() override; |
| + void DisplayWillDrawAndSwap(bool will_draw_and_swap, |
| + const cc::RenderPassList& render_passes) override; |
| + void DisplayDidDrawAndSwap() override; |
| + |
| // SurfaceFactoryClient implementation. |
| void ReturnResources(const cc::ReturnedResourceArray& resources) override; |
| void SetBeginFrameSource(cc::BeginFrameSource* begin_frame_source) override; |
| const cc::FrameSinkId frame_sink_id_; |
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
|
gab
2016/11/02 18:07:33
Fwd-decl SingleThreadTaskRunner;
|
| ServerWindowCompositorFrameSinkManager* manager_; // Owns this. |
| gfx::Size last_submitted_frame_size_; |
| + // ServerWindowCompositorFrameSink holds a cc::Display if it created with |
| + // non-null gfx::AcceleratedWidget. In the window server, the display root |
| + // window's CompositorFrameSink will have a valid gfx::AcceleratedWidget. |
| + std::unique_ptr<cc::Display> display_; |
|
gab
2016/11/02 18:07:33
#include <memory>
|
| cc::LocalFrameId local_frame_id_; |
| cc::SurfaceIdAllocator surface_id_allocator_; |