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 #include "components/display_compositor/gpu_compositor_frame_sink.h" | 5 #include "components/display_compositor/gpu_compositor_frame_sink.h" |
6 | 6 |
7 #include "cc/surfaces/surface_reference.h" | 7 #include "cc/surfaces/surface_reference.h" |
8 | 8 |
9 namespace display_compositor { | 9 namespace display_compositor { |
10 | 10 |
11 GpuCompositorFrameSink::GpuCompositorFrameSink( | 11 GpuCompositorFrameSink::GpuCompositorFrameSink( |
12 GpuCompositorFrameSinkDelegate* delegate, | 12 GpuCompositorFrameSinkDelegate* delegate, |
13 std::unique_ptr<cc::CompositorFrameSinkSupport> support, | 13 std::unique_ptr<cc::CompositorFrameSinkSupport> support, |
14 cc::mojom::MojoCompositorFrameSinkPrivateRequest | |
15 compositor_frame_sink_private_request, | |
16 cc::mojom::MojoCompositorFrameSinkClientPtr client) | 14 cc::mojom::MojoCompositorFrameSinkClientPtr client) |
17 : delegate_(delegate), | 15 : delegate_(delegate), |
18 support_(std::move(support)), | 16 support_(std::move(support)), |
19 client_(std::move(client)), | 17 client_(std::move(client)) {} |
20 compositor_frame_sink_private_binding_( | |
21 this, | |
22 std::move(compositor_frame_sink_private_request)) { | |
23 compositor_frame_sink_private_binding_.set_connection_error_handler( | |
24 base::Bind(&GpuCompositorFrameSink::OnPrivateConnectionLost, | |
25 base::Unretained(this))); | |
26 } | |
27 | 18 |
28 GpuCompositorFrameSink::~GpuCompositorFrameSink() {} | 19 GpuCompositorFrameSink::~GpuCompositorFrameSink() {} |
29 | 20 |
30 void GpuCompositorFrameSink::EvictFrame() { | 21 void GpuCompositorFrameSink::EvictFrame() { |
31 support_->EvictFrame(); | 22 support_->EvictFrame(); |
32 } | 23 } |
33 | 24 |
34 void GpuCompositorFrameSink::SetNeedsBeginFrame(bool needs_begin_frame) { | 25 void GpuCompositorFrameSink::SetNeedsBeginFrame(bool needs_begin_frame) { |
35 support_->SetNeedsBeginFrame(needs_begin_frame); | 26 support_->SetNeedsBeginFrame(needs_begin_frame); |
36 } | 27 } |
(...skipping 11 matching lines...) Expand all Loading... |
48 | 39 |
49 void GpuCompositorFrameSink::Satisfy(const cc::SurfaceSequence& sequence) { | 40 void GpuCompositorFrameSink::Satisfy(const cc::SurfaceSequence& sequence) { |
50 support_->Satisfy(sequence); | 41 support_->Satisfy(sequence); |
51 } | 42 } |
52 | 43 |
53 void GpuCompositorFrameSink::DidReceiveCompositorFrameAck() { | 44 void GpuCompositorFrameSink::DidReceiveCompositorFrameAck() { |
54 if (client_) | 45 if (client_) |
55 client_->DidReceiveCompositorFrameAck(); | 46 client_->DidReceiveCompositorFrameAck(); |
56 } | 47 } |
57 | 48 |
58 void GpuCompositorFrameSink::AddChildFrameSink( | |
59 const cc::FrameSinkId& child_frame_sink_id) { | |
60 support_->AddChildFrameSink(child_frame_sink_id); | |
61 } | |
62 | |
63 void GpuCompositorFrameSink::RemoveChildFrameSink( | |
64 const cc::FrameSinkId& child_frame_sink_id) { | |
65 support_->RemoveChildFrameSink(child_frame_sink_id); | |
66 } | |
67 | |
68 void GpuCompositorFrameSink::OnBeginFrame(const cc::BeginFrameArgs& args) { | 49 void GpuCompositorFrameSink::OnBeginFrame(const cc::BeginFrameArgs& args) { |
69 if (client_) | 50 if (client_) |
70 client_->OnBeginFrame(args); | 51 client_->OnBeginFrame(args); |
71 } | 52 } |
72 | 53 |
73 void GpuCompositorFrameSink::ReclaimResources( | 54 void GpuCompositorFrameSink::ReclaimResources( |
74 const cc::ReturnedResourceArray& resources) { | 55 const cc::ReturnedResourceArray& resources) { |
75 if (client_) | 56 if (client_) |
76 client_->ReclaimResources(resources); | 57 client_->ReclaimResources(resources); |
77 } | 58 } |
78 | 59 |
79 void GpuCompositorFrameSink::WillDrawSurface() { | 60 void GpuCompositorFrameSink::WillDrawSurface() { |
80 if (client_) | 61 if (client_) |
81 client_->WillDrawSurface(); | 62 client_->WillDrawSurface(); |
82 } | 63 } |
83 | 64 |
84 void GpuCompositorFrameSink::OnClientConnectionLost() { | 65 void GpuCompositorFrameSink::OnClientConnectionLost() { |
85 client_connection_lost_ = true; | 66 SetClientConnectionLost(true); |
86 // Request destruction of |this| only if both connections are lost. | 67 // Request destruction of |this| only if both connections are lost. |
87 delegate_->OnClientConnectionLost(support_->frame_sink_id(), | 68 delegate_->OnClientConnectionLost(support_->frame_sink_id(), |
88 private_connection_lost_); | 69 GetPrivateConnectionLost()); |
89 } | |
90 | |
91 void GpuCompositorFrameSink::OnPrivateConnectionLost() { | |
92 private_connection_lost_ = true; | |
93 // Request destruction of |this| only if both connections are lost. | |
94 delegate_->OnPrivateConnectionLost(support_->frame_sink_id(), | |
95 client_connection_lost_); | |
96 } | 70 } |
97 | 71 |
98 } // namespace display_compositor | 72 } // namespace display_compositor |
OLD | NEW |