Index: cc/surfaces/compositor_frame_sink_support.h |
diff --git a/cc/surfaces/compositor_frame_sink_support.h b/cc/surfaces/compositor_frame_sink_support.h |
index 8471bbd15c6b186b1c4678f6f64a7246ab41fd18..7b201fabecc64e9943e7bca17e948e529c41a1d8 100644 |
--- a/cc/surfaces/compositor_frame_sink_support.h |
+++ b/cc/surfaces/compositor_frame_sink_support.h |
@@ -26,12 +26,16 @@ class CC_SURFACES_EXPORT CompositorFrameSinkSupport |
public SurfaceFactoryClient, |
public BeginFrameObserver { |
public: |
- CompositorFrameSinkSupport( |
- CompositorFrameSinkSupportClient* client, |
- SurfaceManager* surface_manager, |
- const FrameSinkId& frame_sink_id, |
- std::unique_ptr<Display> display, |
- std::unique_ptr<BeginFrameSource> display_begin_frame_source); |
+ // |display| is nullptr if the CompositorFrameSinkSupport submits |
+ // CompositorFrames to a offscreen texutre/bitmap instead of a |
+ // DisplayCompositor. e.g. OffscreenCanvasCompositorFrameSink and |
+ // GpuOffscreenCompositorFrameSink. |
+ CompositorFrameSinkSupport(CompositorFrameSinkSupportClient* client, |
+ SurfaceManager* surface_manager, |
+ const FrameSinkId& frame_sink_id, |
+ Display* display, |
+ bool handles_frame_sink_id_invalidation, |
+ bool needs_sync_points); |
~CompositorFrameSinkSupport() override; |
@@ -46,8 +50,9 @@ class CC_SURFACES_EXPORT CompositorFrameSinkSupport |
void Satisfy(const SurfaceSequence& sequence); |
void AddChildFrameSink(const FrameSinkId& child_frame_sink_id); |
void RemoveChildFrameSink(const FrameSinkId& child_frame_sink_id); |
+ void ForceReclaimResources(); |
- Display* display() { return display_.get(); } |
+ Display* display() { return display_; } |
private: |
void DidReceiveCompositorFrameAck(); |
@@ -74,14 +79,8 @@ class CC_SURFACES_EXPORT CompositorFrameSinkSupport |
CompositorFrameSinkSupportClient* const client_; |
SurfaceManager* const surface_manager_; |
- |
const FrameSinkId frame_sink_id_; |
- |
- // GpuCompositorFrameSink holds a Display and its BeginFrameSource if it |
- // created with non-null gpu::SurfaceHandle. In the window server, the display |
- // root window's CompositorFrameSink will have a valid gpu::SurfaceHandle. |
- std::unique_ptr<BeginFrameSource> display_begin_frame_source_; |
- std::unique_ptr<Display> display_; |
+ Display* const display_; |
SurfaceFactory surface_factory_; |
// Counts the number of CompositorFrames that have been submitted and have not |
@@ -101,6 +100,10 @@ class CC_SURFACES_EXPORT CompositorFrameSinkSupport |
// Whether or not a frame observer has been added. |
bool added_frame_observer_ = false; |
+ // TODO(staraz): Remove this flag once ui::Compositor no longer needs |
+ // RegisterFrameSinkId(). |
Fady Samuel
2017/02/07 17:33:55
This needs to be far more explicit. How about this
Alex Z.
2017/02/07 17:40:52
Done.
|
+ const bool handles_frame_sink_id_invalidation_; |
+ |
// The set of BeginFrame children of this CompositorFrameSink. |
std::unordered_set<FrameSinkId, FrameSinkIdHash> child_frame_sinks_; |