Index: services/ui/ws/server_window_compositor_frame_sink_manager.h |
diff --git a/services/ui/ws/server_window_compositor_frame_sink_manager.h b/services/ui/ws/server_window_compositor_frame_sink_manager.h |
index 9bc96eb79a275932a6b25fca70a14675f4c61d7e..688b359ad81c6c04c051d3808a123553e4df6e2e 100644 |
--- a/services/ui/ws/server_window_compositor_frame_sink_manager.h |
+++ b/services/ui/ws/server_window_compositor_frame_sink_manager.h |
@@ -38,30 +38,47 @@ struct CompositorFrameSinkData { |
cc::SurfaceId latest_submitted_surface_id; |
gfx::Size latest_submitted_frame_size; |
cc::SurfaceSequenceGenerator surface_sequence_generator; |
- // TODO(fsamuel): This should be a mojo interface. |
- std::unique_ptr<ServerWindowCompositorFrameSink> compositor_frame_sink; |
+ cc::mojom::MojoCompositorFrameSinkPrivatePtr compositor_frame_sink; |
+ cc::mojom::MojoCompositorFrameSinkPrivateRequest |
+ pending_compositor_frame_sink_request; |
}; |
// ServerWindowCompositorFrameSinkManager tracks the surfaces associated with a |
// ServerWindow. |
+// TODO(fsamuel): Delete this once window decorations are managed in the window |
+// manager. |
class ServerWindowCompositorFrameSinkManager { |
public: |
explicit ServerWindowCompositorFrameSinkManager(ServerWindow* window); |
~ServerWindowCompositorFrameSinkManager(); |
- // Returns true if the surfaces from this manager should be drawn. |
+ // Returns true if the CompositorFrameSinks from this manager should be drawn. |
bool ShouldDraw(); |
- // Creates a new surface of the specified type, replacing the existing one of |
- // the specified type. |
+ // Creates a new CompositorFrameSink of the specified type, replacing the |
+ // existing one of the specified type. |
void CreateCompositorFrameSink( |
- mojom::CompositorFrameSinkType surface_type, |
+ mojom::CompositorFrameSinkType compositor_frame_sink_type, |
gfx::AcceleratedWidget widget, |
gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, |
scoped_refptr<SurfacesContextProvider> context_provider, |
cc::mojom::MojoCompositorFrameSinkRequest request, |
cc::mojom::MojoCompositorFrameSinkClientPtr client); |
+ // Adds the provided |frame_sink_id| to this ServerWindow's associated |
+ // CompositorFrameSink if possible. If this ServerWindow does not have |
+ // an associated CompositorFrameSink then this method will recursively |
+ // walk up the window hierarchy and register itself with the first ancestor |
+ // that has a CompositorFrameSink of the same type. This method returns |
+ // the FrameSinkId that is the first composited ancestor of the ServerWindow |
+ // assocaited with the provided |frame_sink_id|. |
+ void AddChildFrameSinkId( |
+ mojom::CompositorFrameSinkType compositor_frame_sink_type, |
+ const cc::FrameSinkId& frame_sink_id); |
+ void RemoveChildFrameSinkId( |
+ mojom::CompositorFrameSinkType compositor_frame_sink_type, |
+ const cc::FrameSinkId& frame_sink_id); |
+ |
ServerWindow* window() { return window_; } |
bool HasCompositorFrameSinkOfType(mojom::CompositorFrameSinkType type) const; |