Index: cc/surfaces/direct_compositor_frame_sink.h |
diff --git a/cc/surfaces/direct_compositor_frame_sink.h b/cc/surfaces/direct_compositor_frame_sink.h |
index 86210dabab4cb1aa296efe445311302a41e8589b..66dfe1b873dbdcaa4aa0f0cc8177b2183bdf9bed 100644 |
--- a/cc/surfaces/direct_compositor_frame_sink.h |
+++ b/cc/surfaces/direct_compositor_frame_sink.h |
@@ -8,6 +8,8 @@ |
#include "base/macros.h" |
#include "base/threading/thread_checker.h" |
#include "cc/output/compositor_frame_sink.h" |
+#include "cc/surfaces/compositor_frame_sink_support.h" |
+#include "cc/surfaces/compositor_frame_sink_support_client.h" |
#include "cc/surfaces/display_client.h" |
#include "cc/surfaces/surface_factory.h" |
#include "cc/surfaces/surface_factory_client.h" |
@@ -23,8 +25,9 @@ class SurfaceManager; |
// client's frame being the root surface of the Display. |
class CC_SURFACES_EXPORT DirectCompositorFrameSink |
: public CompositorFrameSink, |
- public SurfaceFactoryClient, |
- public NON_EXPORTED_BASE(DisplayClient) { |
+ public NON_EXPORTED_BASE(DisplayClient), |
+ public CompositorFrameSinkSupportClient, |
+ public ExternalBeginFrameSourceClient { |
public: |
// The underlying Display, SurfaceManager, and SurfaceIdAllocator must outlive |
// this class. |
@@ -49,19 +52,24 @@ class CC_SURFACES_EXPORT DirectCompositorFrameSink |
void SubmitCompositorFrame(CompositorFrame frame) override; |
void ForceReclaimResources() override; |
- // SurfaceFactoryClient implementation. |
- void ReturnResources(const ReturnedResourceArray& resources) override; |
- void SetBeginFrameSource(BeginFrameSource* begin_frame_source) override; |
- |
// DisplayClient implementation. |
void DisplayOutputSurfaceLost() override; |
void DisplayWillDrawAndSwap(bool will_draw_and_swap, |
const RenderPassList& render_passes) override; |
void DisplayDidDrawAndSwap() override; |
+ // CompositorFrameSinkSupportClient implementation: |
+ void DidReceiveCompositorFrameAck() override; |
+ void OnBeginFrame(const BeginFrameArgs& args) override; |
+ void ReclaimResources(const ReturnedResourceArray& resources) override; |
+ void WillDrawSurface() override; |
+ |
private: |
void DidDrawCallback(); |
+ // ExternalBeginFrameSouceClient implementation: |
+ void OnNeedsBeginFrames(bool needs_begin_frames) override; |
+ |
// This class is only meant to be used on a single thread. |
base::ThreadChecker thread_checker_; |
@@ -70,9 +78,11 @@ class CC_SURFACES_EXPORT DirectCompositorFrameSink |
SurfaceManager* surface_manager_; |
SurfaceIdAllocator surface_id_allocator_; |
Display* display_; |
- SurfaceFactory factory_; |
gfx::Size last_swap_frame_size_; |
bool is_lost_ = false; |
+ std::unique_ptr<ExternalBeginFrameSource> begin_frame_source_; |
+ |
+ std::unique_ptr<CompositorFrameSinkSupport> support_; |
DISALLOW_COPY_AND_ASSIGN(DirectCompositorFrameSink); |
}; |