| Index: components/exo/compositor_frame_sink_holder.cc
|
| diff --git a/components/exo/compositor_frame_sink_holder.cc b/components/exo/compositor_frame_sink_holder.cc
|
| index b516b842a52f5ec660badee0bfed3aa464022818..4b015b7e4a0a11ec653032c36b4fa04dc7a9b8a9 100644
|
| --- a/components/exo/compositor_frame_sink_holder.cc
|
| +++ b/components/exo/compositor_frame_sink_holder.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "components/exo/compositor_frame_sink_holder.h"
|
|
|
| +#include "cc/output/compositor_frame_sink.h"
|
| #include "cc/resources/returned_resource.h"
|
| #include "components/exo/surface.h"
|
|
|
| @@ -14,15 +15,12 @@ namespace exo {
|
|
|
| CompositorFrameSinkHolder::CompositorFrameSinkHolder(
|
| Surface* surface,
|
| - const cc::FrameSinkId& frame_sink_id,
|
| - cc::SurfaceManager* surface_manager)
|
| + std::unique_ptr<cc::CompositorFrameSink> frame_sink)
|
| : surface_(surface),
|
| - frame_sink_(
|
| - new CompositorFrameSink(frame_sink_id, surface_manager, this)),
|
| - begin_frame_source_(base::MakeUnique<cc::ExternalBeginFrameSource>(this)),
|
| + frame_sink_(std::move(frame_sink)),
|
| weak_factory_(this) {
|
| surface_->AddSurfaceObserver(this);
|
| - surface_->SetBeginFrameSource(begin_frame_source_.get());
|
| + frame_sink_->BindToClient(this);
|
| }
|
|
|
| bool CompositorFrameSinkHolder::HasReleaseCallbackForResource(
|
| @@ -38,17 +36,12 @@ void CompositorFrameSinkHolder::SetResourceReleaseCallback(
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| -// cc::mojom::MojoCompositorFrameSinkClient overrides:
|
| +// cc::CompositorFrameSinkClient overrides:
|
|
|
| -void CompositorFrameSinkHolder::DidReceiveCompositorFrameAck(
|
| - const cc::ReturnedResourceArray& resources) {
|
| - ReclaimResources(resources);
|
| +void CompositorFrameSinkHolder::SetBeginFrameSource(
|
| + cc::BeginFrameSource* source) {
|
| if (surface_)
|
| - surface_->DidReceiveCompositorFrameAck();
|
| -}
|
| -
|
| -void CompositorFrameSinkHolder::OnBeginFrame(const cc::BeginFrameArgs& args) {
|
| - begin_frame_source_->OnBeginFrame(args);
|
| + surface_->SetBeginFrameSource(source);
|
| }
|
|
|
| void CompositorFrameSinkHolder::ReclaimResources(
|
| @@ -63,17 +56,9 @@ void CompositorFrameSinkHolder::ReclaimResources(
|
| }
|
| }
|
|
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// cc::ExternalBeginFrameSourceClient overrides:
|
| -
|
| -void CompositorFrameSinkHolder::OnNeedsBeginFrames(bool needs_begin_frames) {
|
| - frame_sink_->SetNeedsBeginFrame(needs_begin_frames);
|
| -}
|
| -
|
| -void CompositorFrameSinkHolder::OnDidFinishFrame(const cc::BeginFrameAck& ack) {
|
| - // If there was damage, the submitted CompositorFrame includes the ack.
|
| - if (!ack.has_damage)
|
| - frame_sink_->BeginFrameDidNotSwap(ack);
|
| +void CompositorFrameSinkHolder::DidReceiveCompositorFrameAck() {
|
| + if (surface_)
|
| + surface_->DidReceiveCompositorFrameAck();
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| @@ -88,6 +73,7 @@ void CompositorFrameSinkHolder::OnSurfaceDestroying(Surface* surface) {
|
| // ExoComopositorFrameSink, private:
|
|
|
| CompositorFrameSinkHolder::~CompositorFrameSinkHolder() {
|
| + frame_sink_->DetachFromClient();
|
| if (surface_)
|
| surface_->RemoveSurfaceObserver(this);
|
| }
|
|
|