| Index: content/renderer/gpu/renderer_compositor_frame_sink.h
|
| diff --git a/content/renderer/gpu/renderer_compositor_frame_sink.h b/content/renderer/gpu/renderer_compositor_frame_sink.h
|
| index 07826f098a871dd874bdd736b55437053564ade3..e6d57808eda174e58a910a0acb0c72721f590383 100644
|
| --- a/content/renderer/gpu/renderer_compositor_frame_sink.h
|
| +++ b/content/renderer/gpu/renderer_compositor_frame_sink.h
|
| @@ -18,6 +18,7 @@
|
| #include "base/time/time.h"
|
| #include "build/build_config.h"
|
| #include "cc/input/selection.h"
|
| +#include "cc/ipc/mojo_compositor_frame_sink.mojom.h"
|
| #include "cc/output/begin_frame_args.h"
|
| #include "cc/output/compositor_frame_sink.h"
|
| #include "cc/scheduler/begin_frame_source.h"
|
| @@ -25,12 +26,9 @@
|
| #include "cc/surfaces/local_surface_id_allocator.h"
|
| #include "content/renderer/gpu/compositor_forwarding_message_filter.h"
|
| #include "ipc/ipc_sync_message_filter.h"
|
| +#include "mojo/public/cpp/bindings/binding.h"
|
| #include "ui/gfx/selection_bound.h"
|
|
|
| -namespace IPC {
|
| -class Message;
|
| -}
|
| -
|
| namespace cc {
|
| class CompositorFrame;
|
| class ContextProvider;
|
| @@ -44,11 +42,11 @@ class FrameSwapMessageQueue;
|
| class RendererCompositorFrameSink
|
| : NON_EXPORTED_BASE(public cc::CompositorFrameSink),
|
| NON_EXPORTED_BASE(public base::NonThreadSafe),
|
| + NON_EXPORTED_BASE(public cc::mojom::MojoCompositorFrameSinkClient),
|
| public cc::ExternalBeginFrameSourceClient {
|
| public:
|
| RendererCompositorFrameSink(
|
| int32_t routing_id,
|
| - uint32_t compositor_frame_sink_id,
|
| std::unique_ptr<cc::SyntheticBeginFrameSource>
|
| synthetic_begin_frame_source,
|
| scoped_refptr<cc::ContextProvider> context_provider,
|
| @@ -58,7 +56,6 @@ class RendererCompositorFrameSink
|
| scoped_refptr<FrameSwapMessageQueue> swap_frame_message_queue);
|
| RendererCompositorFrameSink(
|
| int32_t routing_id,
|
| - uint32_t compositor_frame_sink_id,
|
| std::unique_ptr<cc::SyntheticBeginFrameSource>
|
| synthetic_begin_frame_source,
|
| scoped_refptr<cc::VulkanContextProvider> vulkan_context_provider,
|
| @@ -70,50 +67,23 @@ class RendererCompositorFrameSink
|
| void DetachFromClient() override;
|
| void SubmitCompositorFrame(cc::CompositorFrame frame) override;
|
|
|
| - protected:
|
| - uint32_t compositor_frame_sink_id_;
|
| -
|
| private:
|
| - class RendererCompositorFrameSinkProxy
|
| - : public base::RefCountedThreadSafe<RendererCompositorFrameSinkProxy> {
|
| - public:
|
| - explicit RendererCompositorFrameSinkProxy(
|
| - RendererCompositorFrameSink* compositor_frame_sink)
|
| - : compositor_frame_sink_(compositor_frame_sink) {}
|
| - void ClearCompositorFrameSink() { compositor_frame_sink_ = NULL; }
|
| - void OnMessageReceived(const IPC::Message& message) {
|
| - if (compositor_frame_sink_)
|
| - compositor_frame_sink_->OnMessageReceived(message);
|
| - }
|
| -
|
| - private:
|
| - friend class base::RefCountedThreadSafe<RendererCompositorFrameSinkProxy>;
|
| - ~RendererCompositorFrameSinkProxy() {}
|
| - RendererCompositorFrameSink* compositor_frame_sink_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(RendererCompositorFrameSinkProxy);
|
| - };
|
| -
|
| - void OnMessageReceived(const IPC::Message& message);
|
| - void OnReclaimCompositorResources(uint32_t compositor_frame_sink_id,
|
| - bool is_swap_ack,
|
| - const cc::ReturnedResourceArray& resources);
|
| - void OnSetBeginFrameSourcePaused(bool paused);
|
| - void OnBeginFrame(const cc::BeginFrameArgs& args);
|
| - bool Send(IPC::Message* message);
|
| -
|
| bool ShouldAllocateNewLocalSurfaceId(const cc::CompositorFrame& frame);
|
| void UpdateFrameData(const cc::CompositorFrame& frame);
|
|
|
| + // cc::mojom::MojoCompositorFrameSinkClient implementation.
|
| + void DidReceiveCompositorFrameAck() override;
|
| + void OnBeginFrame(const cc::BeginFrameArgs& args) override;
|
| + void ReclaimResources(const cc::ReturnedResourceArray& resources) override;
|
| + void WillDrawSurface(const cc::LocalSurfaceId& local_surface_id,
|
| + const gfx::Rect& damage_rect) override {}
|
| +
|
| // cc::ExternalBeginFrameSourceClient implementation.
|
| void OnNeedsBeginFrames(bool need_begin_frames) override;
|
| void OnDidFinishFrame(const cc::BeginFrameAck& ack) override;
|
|
|
| - scoped_refptr<CompositorForwardingMessageFilter>
|
| - compositor_frame_sink_filter_;
|
| - CompositorForwardingMessageFilter::Handler
|
| - compositor_frame_sink_filter_handler_;
|
| - scoped_refptr<RendererCompositorFrameSinkProxy> compositor_frame_sink_proxy_;
|
| + void EstablishMojoConnection();
|
| +
|
| scoped_refptr<IPC::SyncMessageFilter> message_sender_;
|
| scoped_refptr<FrameSwapMessageQueue> frame_swap_message_queue_;
|
| std::unique_ptr<cc::SyntheticBeginFrameSource> synthetic_begin_frame_source_;
|
| @@ -136,6 +106,12 @@ class RendererCompositorFrameSink
|
| } current_frame_data_;
|
|
|
| base::ThreadChecker thread_checker_;
|
| +
|
| + cc::mojom::MojoCompositorFrameSinkPtr sink_;
|
| + cc::mojom::MojoCompositorFrameSinkPtrInfo sink_ptr_info_;
|
| + cc::mojom::MojoCompositorFrameSinkClientRequest sink_client_request_;
|
| + mojo::Binding<cc::mojom::MojoCompositorFrameSinkClient> sink_client_binding_;
|
| +
|
| bool bound_ = false;
|
| };
|
|
|
|
|