Index: content/browser/renderer_host/delegated_frame_host.h |
diff --git a/content/browser/renderer_host/delegated_frame_host.h b/content/browser/renderer_host/delegated_frame_host.h |
index 6b3b0b1b6c437f528c38500d35327fb033d59001..c650d714410c44627cbe3a802a2d771f02da7ec2 100644 |
--- a/content/browser/renderer_host/delegated_frame_host.h |
+++ b/content/browser/renderer_host/delegated_frame_host.h |
@@ -11,7 +11,8 @@ |
#include "base/gtest_prod_util.h" |
#include "cc/output/copy_output_result.h" |
-#include "cc/surfaces/surface_factory_client.h" |
+#include "cc/scheduler/begin_frame_source.h" |
+#include "cc/surfaces/compositor_frame_sink_support_client.h" |
#include "content/browser/compositor/image_transport_factory.h" |
#include "content/browser/compositor/owned_mailbox.h" |
#include "content/browser/renderer_host/delegated_frame_evictor.h" |
@@ -31,8 +32,8 @@ class TickClock; |
} |
namespace cc { |
+class CompositorFrameSinkSupport; |
class LocalSurfaceIdAllocator; |
-class SurfaceFactory; |
} |
namespace media { |
@@ -87,7 +88,8 @@ class CONTENT_EXPORT DelegatedFrameHost |
public ui::CompositorVSyncManager::Observer, |
public ui::ContextFactoryObserver, |
public DelegatedFrameEvictorClient, |
- public cc::SurfaceFactoryClient, |
+ public NON_EXPORTED_BASE(cc::CompositorFrameSinkSupportClient), |
+ public cc::ExternalBeginFrameSourceClient, |
public base::SupportsWeakPtr<DelegatedFrameHost> { |
public: |
DelegatedFrameHost(const cc::FrameSinkId& frame_sink_id, |
@@ -112,11 +114,12 @@ class CONTENT_EXPORT DelegatedFrameHost |
// DelegatedFrameEvictorClient implementation. |
void EvictDelegatedFrame() override; |
- // cc::SurfaceFactoryClient implementation. |
- void ReturnResources(const cc::ReturnedResourceArray& resources) override; |
+ // cc::CompositorFrameSinkSupportClient implementation. |
+ void DidReceiveCompositorFrameAck() override; |
+ void OnBeginFrame(const cc::BeginFrameArgs& args) override; |
+ void ReclaimResources(const cc::ReturnedResourceArray& resources) override; |
void WillDrawSurface(const cc::LocalSurfaceId& id, |
const gfx::Rect& damage_rect) override; |
- void SetBeginFrameSource(cc::BeginFrameSource* begin_frame_source) override; |
bool CanCopyToBitmap() const; |
@@ -243,14 +246,17 @@ class CONTENT_EXPORT DelegatedFrameHost |
scoped_refptr<OwnedMailbox> subscriber_texture, |
const gpu::SyncToken& sync_token); |
- void SendReclaimCompositorResources(uint32_t compositor_frame_sink_id, |
- bool is_swap_ack); |
- void SurfaceDrawn(uint32_t compositor_frame_sink_id); |
- |
// Called to consult the current |frame_subscriber_|, to determine and maybe |
// initiate a copy-into-video-frame request. |
void AttemptFrameSubscriberCapture(const gfx::Rect& damage_rect); |
+ // cc::ExternalBeginFrameSource implementation. |
+ void OnNeedsBeginFrames(bool needs_begin_frames) override; |
+ void OnDidFinishFrame(const cc::BeginFrameAck& ack) override; |
+ |
+ void CreateCompositorFrameSinkSupport(); |
+ void ResetCompositorFrameSinkSupport(); |
+ |
const cc::FrameSinkId frame_sink_id_; |
cc::LocalSurfaceId local_surface_id_; |
DelegatedFrameHostClient* const client_; |
@@ -272,10 +278,6 @@ class CONTENT_EXPORT DelegatedFrameHost |
// surfaces. |
uint32_t last_compositor_frame_sink_id_; |
- // The number of delegated frame acks that are pending, to delay resource |
- // returns until the acks are sent. |
- int pending_delegated_ack_count_; |
- |
// True after a delegated frame has been skipped, until a frame is not |
// skipped. |
bool skipped_frames_; |
@@ -289,7 +291,7 @@ class CONTENT_EXPORT DelegatedFrameHost |
// State for rendering into a Surface. |
std::unique_ptr<cc::LocalSurfaceIdAllocator> id_allocator_; |
- std::unique_ptr<cc::SurfaceFactory> surface_factory_; |
+ std::unique_ptr<cc::CompositorFrameSinkSupport> support_; |
gfx::Size current_surface_size_; |
float current_scale_factor_; |
cc::ReturnedResourceArray surface_returned_resources_; |
@@ -334,6 +336,10 @@ class CONTENT_EXPORT DelegatedFrameHost |
std::unique_ptr<display_compositor::ReadbackYUVInterface> |
yuv_readback_pipeline_; |
+ std::unique_ptr<cc::ExternalBeginFrameSource> begin_frame_source_; |
+ |
+ bool needs_begin_frame_ = false; |
+ |
std::unique_ptr<DelegatedFrameEvictor> delegated_frame_evictor_; |
}; |