| Index: content/renderer/gpu/renderer_compositor_frame_sink.cc
|
| diff --git a/content/renderer/gpu/renderer_compositor_frame_sink.cc b/content/renderer/gpu/renderer_compositor_frame_sink.cc
|
| index 92547a90b705889c5b1a07ac9d0072274613909a..d1754ef293a173c429728a76f12af829f954100f 100644
|
| --- a/content/renderer/gpu/renderer_compositor_frame_sink.cc
|
| +++ b/content/renderer/gpu/renderer_compositor_frame_sink.cc
|
| @@ -36,27 +36,22 @@ RendererCompositorFrameSink::RendererCompositorFrameSink(
|
| cc::mojom::MojoCompositorFrameSinkPtrInfo sink_info,
|
| cc::mojom::MojoCompositorFrameSinkClientRequest sink_client_request,
|
| scoped_refptr<FrameSwapMessageQueue> swap_frame_message_queue)
|
| - : CompositorFrameSink(std::move(context_provider),
|
| - std::move(worker_context_provider),
|
| - gpu_memory_buffer_manager,
|
| - shared_bitmap_manager),
|
| + : ClientCompositorFrameSink(std::move(context_provider),
|
| + std::move(worker_context_provider),
|
| + gpu_memory_buffer_manager,
|
| + shared_bitmap_manager,
|
| + std::move(synthetic_begin_frame_source),
|
| + std::move(sink_info),
|
| + std::move(sink_client_request),
|
| + false /* enable_surface_synchronization */),
|
| compositor_frame_sink_filter_(
|
| RenderThreadImpl::current()->compositor_message_filter()),
|
| message_sender_(RenderThreadImpl::current()->sync_message_filter()),
|
| frame_swap_message_queue_(swap_frame_message_queue),
|
| - synthetic_begin_frame_source_(std::move(synthetic_begin_frame_source)),
|
| - external_begin_frame_source_(
|
| - synthetic_begin_frame_source_
|
| - ? nullptr
|
| - : base::MakeUnique<cc::ExternalBeginFrameSource>(this)),
|
| - routing_id_(routing_id),
|
| - sink_info_(std::move(sink_info)),
|
| - sink_client_request_(std::move(sink_client_request)),
|
| - sink_client_binding_(this) {
|
| + routing_id_(routing_id) {
|
| DCHECK(compositor_frame_sink_filter_);
|
| DCHECK(frame_swap_message_queue_);
|
| DCHECK(message_sender_);
|
| - thread_checker_.DetachFromThread();
|
| }
|
|
|
| RendererCompositorFrameSink::RendererCompositorFrameSink(
|
| @@ -66,64 +61,43 @@ RendererCompositorFrameSink::RendererCompositorFrameSink(
|
| cc::mojom::MojoCompositorFrameSinkPtrInfo sink_info,
|
| cc::mojom::MojoCompositorFrameSinkClientRequest sink_client_request,
|
| scoped_refptr<FrameSwapMessageQueue> swap_frame_message_queue)
|
| - : CompositorFrameSink(std::move(vulkan_context_provider)),
|
| + : ClientCompositorFrameSink(std::move(vulkan_context_provider),
|
| + std::move(synthetic_begin_frame_source),
|
| + std::move(sink_info),
|
| + std::move(sink_client_request),
|
| + false /* enable_surface_synchronization */),
|
| compositor_frame_sink_filter_(
|
| RenderThreadImpl::current()->compositor_message_filter()),
|
| message_sender_(RenderThreadImpl::current()->sync_message_filter()),
|
| frame_swap_message_queue_(swap_frame_message_queue),
|
| - synthetic_begin_frame_source_(std::move(synthetic_begin_frame_source)),
|
| - external_begin_frame_source_(
|
| - synthetic_begin_frame_source_
|
| - ? nullptr
|
| - : base::MakeUnique<cc::ExternalBeginFrameSource>(this)),
|
| - routing_id_(routing_id),
|
| - sink_info_(std::move(sink_info)),
|
| - sink_client_request_(std::move(sink_client_request)),
|
| - sink_client_binding_(this) {
|
| + routing_id_(routing_id) {
|
| DCHECK(compositor_frame_sink_filter_);
|
| DCHECK(frame_swap_message_queue_);
|
| DCHECK(message_sender_);
|
| - thread_checker_.DetachFromThread();
|
| }
|
|
|
| RendererCompositorFrameSink::~RendererCompositorFrameSink() = default;
|
|
|
| bool RendererCompositorFrameSink::BindToClient(
|
| cc::CompositorFrameSinkClient* client) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - if (!cc::CompositorFrameSink::BindToClient(client))
|
| + if (!ClientCompositorFrameSink::BindToClient(client))
|
| return false;
|
|
|
| - sink_.Bind(std::move(sink_info_));
|
| - sink_client_binding_.Bind(std::move(sink_client_request_));
|
| -
|
| - if (synthetic_begin_frame_source_)
|
| - client_->SetBeginFrameSource(synthetic_begin_frame_source_.get());
|
| - else
|
| - client_->SetBeginFrameSource(external_begin_frame_source_.get());
|
| -
|
| compositor_frame_sink_proxy_ = new RendererCompositorFrameSinkProxy(this);
|
| compositor_frame_sink_filter_handler_ =
|
| base::Bind(&RendererCompositorFrameSinkProxy::OnMessageReceived,
|
| compositor_frame_sink_proxy_);
|
| compositor_frame_sink_filter_->AddHandlerOnCompositorThread(
|
| routing_id_, compositor_frame_sink_filter_handler_);
|
| +
|
| return true;
|
| }
|
|
|
| void RendererCompositorFrameSink::DetachFromClient() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - client_->SetBeginFrameSource(nullptr);
|
| - // Destroy the begin frame source on the same thread it was bound on.
|
| - // The CompositorFrameSink itself is destroyed on the main thread.
|
| - external_begin_frame_source_ = nullptr;
|
| - synthetic_begin_frame_source_ = nullptr;
|
| compositor_frame_sink_proxy_->ClearCompositorFrameSink();
|
| compositor_frame_sink_filter_->RemoveHandlerOnCompositorThread(
|
| routing_id_, compositor_frame_sink_filter_handler_);
|
| - sink_.reset();
|
| - sink_client_binding_.Close();
|
| - cc::CompositorFrameSink::DetachFromClient();
|
| + ClientCompositorFrameSink::DetachFromClient();
|
| }
|
|
|
| void RendererCompositorFrameSink::SubmitCompositorFrame(
|
| @@ -152,7 +126,7 @@ void RendererCompositorFrameSink::SubmitCompositorFrame(
|
| if (!messages_to_send.empty())
|
| frame_token = frame_swap_message_queue_->AllocateFrameToken();
|
| frame.metadata.frame_token = frame_token;
|
| - sink_->SubmitCompositorFrame(local_surface_id_, std::move(frame));
|
| + sink()->SubmitCompositorFrame(local_surface_id_, std::move(frame));
|
| if (frame_token) {
|
| message_sender_->Send(new ViewHostMsg_FrameSwapMessages(
|
| routing_id_, frame_token, messages_to_send));
|
| @@ -161,36 +135,8 @@ void RendererCompositorFrameSink::SubmitCompositorFrame(
|
| }
|
| }
|
|
|
| -void RendererCompositorFrameSink::DidNotProduceFrame(
|
| - const cc::BeginFrameAck& ack) {
|
| - DCHECK(!ack.has_damage);
|
| - DCHECK_LE(cc::BeginFrameArgs::kStartingFrameNumber, ack.sequence_number);
|
| - sink_->DidNotProduceFrame(ack);
|
| -}
|
| -
|
| void RendererCompositorFrameSink::OnMessageReceived(
|
| const IPC::Message& message) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| -}
|
| -
|
| -void RendererCompositorFrameSink::DidReceiveCompositorFrameAck(
|
| - const cc::ReturnedResourceArray& resources) {
|
| - ReclaimResources(resources);
|
| - client_->DidReceiveCompositorFrameAck();
|
| -}
|
| -
|
| -void RendererCompositorFrameSink::OnBeginFrame(const cc::BeginFrameArgs& args) {
|
| - if (external_begin_frame_source_)
|
| - external_begin_frame_source_->OnBeginFrame(args);
|
| -}
|
| -
|
| -void RendererCompositorFrameSink::ReclaimResources(
|
| - const cc::ReturnedResourceArray& resources) {
|
| - client_->ReclaimResources(resources);
|
| -}
|
| -
|
| -void RendererCompositorFrameSink::OnNeedsBeginFrames(bool needs_begin_frames) {
|
| - sink_->SetNeedsBeginFrame(needs_begin_frames);
|
| }
|
|
|
| } // namespace content
|
|
|