Chromium Code Reviews| Index: cc/output/compositor_frame_sink.h |
| diff --git a/cc/output/compositor_frame_sink.h b/cc/output/compositor_frame_sink.h |
| index ff5e92163963ef1f362f0f2515f2d1baee3cc161..e1f2ec641c5cc5e90f9507a2e7757e1d232aeb55 100644 |
| --- a/cc/output/compositor_frame_sink.h |
| +++ b/cc/output/compositor_frame_sink.h |
| @@ -36,13 +36,12 @@ class CompositorFrame; |
| struct ManagedMemoryPolicy; |
| class CompositorFrameSinkClient; |
| -// Represents the output surface for a compositor. The compositor owns |
| -// and manages its destruction. Its lifetime is: |
| -// 1. Created on the main thread by the LayerTreeHost through its client. |
| -// 2. Passed to the compositor thread and bound to a client via BindToClient. |
| -// From here on, it will only be used on the compositor thread. |
| -// 3. If the 3D context is lost, then the compositor will delete the output |
| -// surface (on the compositor thread) and go back to step 1. |
| +// An interface for submitting CompositorFrames to a display compositor |
|
danakj
2016/10/10 22:08:56
sky: You pointed out comments were missing/bad so
|
| +// which will compose frames from multiple CompositorFrameSinks to show |
| +// on screen to the user. |
| +// If a context_provider() is present, frames should be submitted with |
| +// OpenGL resources (created with the context_provider()). If not, then |
| +// SharedBitmap resources should be used. |
| class CC_EXPORT CompositorFrameSink { |
| public: |
| struct Capabilities { |
| @@ -56,11 +55,11 @@ class CC_EXPORT CompositorFrameSink { |
| bool delegated_sync_points_required = true; |
| }; |
| - // Constructor for GL-based and/or software compositing. |
| + // Constructor for GL-based and/or software resources. |
| CompositorFrameSink(scoped_refptr<ContextProvider> context_provider, |
| scoped_refptr<ContextProvider> worker_context_provider); |
| - // Constructor for Vulkan-based compositing. |
| + // Constructor for Vulkan-based resources. |
| explicit CompositorFrameSink( |
| scoped_refptr<VulkanContextProvider> vulkan_context_provider); |
| @@ -75,18 +74,18 @@ class CC_EXPORT CompositorFrameSink { |
| // should not be called twice for a given CompositorFrameSink. |
| virtual bool BindToClient(CompositorFrameSinkClient* client); |
| - // Called by the compositor on the compositor thread. This is a place where |
| - // thread-specific data for the output surface can be uninitialized. |
| + // Must be called from the thread where BindToClient was called if |
| + // BindToClient succeeded, after which the CompositorFrameSink may be |
| + // destroyed from any thread. This is a place where thread-specific data for |
| + // the object can be uninitialized. |
| virtual void DetachFromClient(); |
| bool HasClient() { return !!client_; } |
| const Capabilities& capabilities() const { return capabilities_; } |
| - // Obtain the 3d context or the software device associated with this output |
| - // surface. Either of these may return a null pointer, but not both. |
| - // In the event of a lost context, the entire output surface should be |
| - // recreated. |
| + // The ContextProviders may be null if frames should be submitted with |
| + // software SharedBitmap resources. |
| ContextProvider* context_provider() const { return context_provider_.get(); } |
| ContextProvider* worker_context_provider() const { |
| return worker_context_provider_.get(); |
| @@ -124,8 +123,6 @@ class CC_EXPORT CompositorFrameSink { |
| base::ThreadChecker client_thread_checker_; |
| private: |
| - void DetachFromClientInternal(); |
| - |
| DISALLOW_COPY_AND_ASSIGN(CompositorFrameSink); |
| }; |