OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef COMPONENTS_DISPLAY_COMPOSITOR_GPU_COMPOSITOR_FRAME_SINK_H_ | 5 #ifndef COMPONENTS_DISPLAY_COMPOSITOR_GPU_COMPOSITOR_FRAME_SINK_H_ |
6 #define COMPONENTS_DISPLAY_COMPOSITOR_GPU_COMPOSITOR_FRAME_SINK_H_ | 6 #define COMPONENTS_DISPLAY_COMPOSITOR_GPU_COMPOSITOR_FRAME_SINK_H_ |
7 | 7 |
8 #include <memory> | 8 #include <memory> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/macros.h" | 11 #include "base/macros.h" |
12 #include "base/memory/weak_ptr.h" | 12 #include "base/memory/weak_ptr.h" |
13 #include "cc/ipc/display_compositor.mojom.h" | 13 #include "cc/ipc/display_compositor.mojom.h" |
14 #include "cc/ipc/mojo_compositor_frame_sink.mojom.h" | 14 #include "cc/ipc/mojo_compositor_frame_sink.mojom.h" |
15 #include "cc/surfaces/compositor_frame_sink_support.h" | 15 #include "cc/surfaces/compositor_frame_sink_support.h" |
16 #include "cc/surfaces/compositor_frame_sink_support_client.h" | 16 #include "cc/surfaces/compositor_frame_sink_support_client.h" |
17 #include "components/display_compositor/display_compositor_export.h" | 17 #include "components/display_compositor/display_compositor_export.h" |
18 #include "components/display_compositor/gpu_compositor_frame_sink_delegate.h" | 18 #include "components/display_compositor/gpu_compositor_frame_sink_delegate.h" |
19 #include "mojo/public/cpp/bindings/binding.h" | 19 #include "mojo/public/cpp/bindings/binding.h" |
20 | 20 |
21 namespace display_compositor { | 21 namespace display_compositor { |
22 | 22 |
23 // Server side representation of a WindowSurface. | 23 // Server side representation of a WindowSurface. |
24 class DISPLAY_COMPOSITOR_EXPORT GpuCompositorFrameSink | 24 class DISPLAY_COMPOSITOR_EXPORT GpuCompositorFrameSink |
25 : public NON_EXPORTED_BASE(cc::CompositorFrameSinkSupportClient), | 25 : public NON_EXPORTED_BASE(cc::CompositorFrameSinkSupportClient), |
26 public NON_EXPORTED_BASE(cc::mojom::MojoCompositorFrameSink), | 26 public NON_EXPORTED_BASE(cc::mojom::MojoCompositorFrameSink) { |
27 public NON_EXPORTED_BASE(cc::mojom::MojoCompositorFrameSinkPrivate) { | |
28 public: | 27 public: |
29 GpuCompositorFrameSink( | 28 GpuCompositorFrameSink( |
30 GpuCompositorFrameSinkDelegate* delegate, | 29 GpuCompositorFrameSinkDelegate* delegate, |
31 std::unique_ptr<cc::CompositorFrameSinkSupport>, | 30 std::unique_ptr<cc::CompositorFrameSinkSupport>, |
32 cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request, | |
33 cc::mojom::MojoCompositorFrameSinkClientPtr client); | 31 cc::mojom::MojoCompositorFrameSinkClientPtr client); |
34 | 32 |
35 ~GpuCompositorFrameSink() override; | 33 ~GpuCompositorFrameSink() override; |
36 | 34 |
37 // cc::mojom::MojoCompositorFrameSink: | 35 // cc::mojom::MojoCompositorFrameSink: |
38 void EvictFrame() override; | 36 void EvictFrame() override; |
39 void SetNeedsBeginFrame(bool needs_begin_frame) override; | 37 void SetNeedsBeginFrame(bool needs_begin_frame) override; |
40 void SubmitCompositorFrame(const cc::LocalSurfaceId& local_surface_id, | 38 void SubmitCompositorFrame(const cc::LocalSurfaceId& local_surface_id, |
41 cc::CompositorFrame frame) override; | 39 cc::CompositorFrame frame) override; |
42 void Require(const cc::LocalSurfaceId& local_surface_id, | 40 void Require(const cc::LocalSurfaceId& local_surface_id, |
43 const cc::SurfaceSequence& sequence) override; | 41 const cc::SurfaceSequence& sequence) override; |
44 void Satisfy(const cc::SurfaceSequence& sequence) override; | 42 void Satisfy(const cc::SurfaceSequence& sequence) override; |
45 | 43 |
46 // cc::mojom::MojoCompositorFrameSinkPrivate: | |
47 void AddChildFrameSink(const cc::FrameSinkId& child_frame_sink_id) override; | |
48 void RemoveChildFrameSink( | |
49 const cc::FrameSinkId& child_frame_sink_id) override; | |
50 | |
51 protected: | 44 protected: |
52 void OnClientConnectionLost(); | 45 void OnClientConnectionLost(); |
53 void OnPrivateConnectionLost(); | 46 void SetClientConnectionLost(bool client_connection_lost) { |
| 47 client_connection_lost_ = client_connection_lost; |
| 48 } |
| 49 bool GetClientConnectionLost() { return client_connection_lost_; } |
| 50 void SetPrivateConnectionLost(bool private_connection_lost) { |
| 51 private_connection_lost_ = private_connection_lost; |
| 52 } |
| 53 bool GetPrivateConnectionLost() { return private_connection_lost_; } |
54 | 54 |
55 GpuCompositorFrameSinkDelegate* const delegate_; | 55 GpuCompositorFrameSinkDelegate* const delegate_; |
56 std::unique_ptr<cc::CompositorFrameSinkSupport> support_; | 56 std::unique_ptr<cc::CompositorFrameSinkSupport> support_; |
57 | 57 |
58 private: | 58 private: |
59 // cc::CompositorFrameSinkSupportClient implementation: | 59 // cc::CompositorFrameSinkSupportClient implementation: |
60 void DidReceiveCompositorFrameAck() override; | 60 void DidReceiveCompositorFrameAck() override; |
61 void OnBeginFrame(const cc::BeginFrameArgs& args) override; | 61 void OnBeginFrame(const cc::BeginFrameArgs& args) override; |
62 void ReclaimResources(const cc::ReturnedResourceArray& resources) override; | 62 void ReclaimResources(const cc::ReturnedResourceArray& resources) override; |
63 void WillDrawSurface() override; | 63 void WillDrawSurface() override; |
64 | 64 |
65 bool client_connection_lost_ = false; | 65 bool client_connection_lost_ = false; |
66 bool private_connection_lost_ = false; | 66 bool private_connection_lost_ = true; |
67 | 67 |
68 cc::mojom::MojoCompositorFrameSinkClientPtr client_; | 68 cc::mojom::MojoCompositorFrameSinkClientPtr client_; |
69 mojo::Binding<cc::mojom::MojoCompositorFrameSinkPrivate> | |
70 compositor_frame_sink_private_binding_; | |
71 | 69 |
72 DISALLOW_COPY_AND_ASSIGN(GpuCompositorFrameSink); | 70 DISALLOW_COPY_AND_ASSIGN(GpuCompositorFrameSink); |
73 }; | 71 }; |
74 | 72 |
75 } // namespace display_compositor | 73 } // namespace display_compositor |
76 | 74 |
77 #endif // COMPONENTS_DISPLAY_COMPOSITOR_GPU_COMPOSITOR_FRAME_SINK_H_ | 75 #endif // COMPONENTS_DISPLAY_COMPOSITOR_GPU_COMPOSITOR_FRAME_SINK_H_ |
OLD | NEW |