OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/browser/renderer_host/delegated_frame_host.h" | 5 #include "content/browser/renderer_host/delegated_frame_host.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 return target_view->TransformPointToLocalCoordSpace( | 212 return target_view->TransformPointToLocalCoordSpace( |
213 point, cc::SurfaceId(frame_sink_id_, local_surface_id_), | 213 point, cc::SurfaceId(frame_sink_id_, local_surface_id_), |
214 transformed_point); | 214 transformed_point); |
215 } | 215 } |
216 | 216 |
217 void DelegatedFrameHost::SetNeedsBeginFrames(bool needs_begin_frames) { | 217 void DelegatedFrameHost::SetNeedsBeginFrames(bool needs_begin_frames) { |
218 needs_begin_frame_ = needs_begin_frames; | 218 needs_begin_frame_ = needs_begin_frames; |
219 support_->SetNeedsBeginFrame(needs_begin_frames); | 219 support_->SetNeedsBeginFrame(needs_begin_frames); |
220 } | 220 } |
221 | 221 |
222 void DelegatedFrameHost::BeginFrameDidNotSwap(const cc::BeginFrameAck& ack) { | 222 void DelegatedFrameHost::DidNotProduceFrame(const cc::BeginFrameAck& ack) { |
223 DidFinishFrame(ack); | 223 DidFinishFrame(ack); |
224 | 224 |
225 cc::BeginFrameAck modified_ack = ack; | 225 cc::BeginFrameAck modified_ack = ack; |
226 if (skipped_frames_) { | 226 if (skipped_frames_) { |
227 // If we skipped the last frame(s), we didn't incorporate the last | 227 // If we skipped the last frame(s), we didn't incorporate the last |
228 // CompositorFrame's damage, so need to wait for the next one before | 228 // CompositorFrame's damage, so need to wait for the next one before |
229 // confirming newer sequence numbers. | 229 // confirming newer sequence numbers. |
230 modified_ack.has_damage = false; | 230 modified_ack.has_damage = false; |
231 modified_ack.latest_confirmed_sequence_number = | 231 modified_ack.latest_confirmed_sequence_number = |
232 latest_confirmed_begin_frame_sequence_number_; | 232 latest_confirmed_begin_frame_sequence_number_; |
233 } | 233 } |
234 | 234 |
235 support_->BeginFrameDidNotSwap(modified_ack); | 235 support_->DidNotProduceFrame(modified_ack); |
236 } | 236 } |
237 | 237 |
238 bool DelegatedFrameHost::ShouldSkipFrame(const gfx::Size& size_in_dip) { | 238 bool DelegatedFrameHost::ShouldSkipFrame(const gfx::Size& size_in_dip) { |
239 if (!resize_lock_) | 239 if (!resize_lock_) |
240 return false; | 240 return false; |
241 // Allow a single renderer frame through even though there's a resize lock | 241 // Allow a single renderer frame through even though there's a resize lock |
242 // currently in place. | 242 // currently in place. |
243 if (allow_one_renderer_frame_during_resize_lock_) { | 243 if (allow_one_renderer_frame_during_resize_lock_) { |
244 allow_one_renderer_frame_during_resize_lock_ = false; | 244 allow_one_renderer_frame_during_resize_lock_ = false; |
245 return false; | 245 return false; |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 cc::ReturnedResourceArray resources; | 414 cc::ReturnedResourceArray resources; |
415 cc::TransferableResource::ReturnResources(frame.resource_list, &resources); | 415 cc::TransferableResource::ReturnResources(frame.resource_list, &resources); |
416 | 416 |
417 skipped_latency_info_list_.insert(skipped_latency_info_list_.end(), | 417 skipped_latency_info_list_.insert(skipped_latency_info_list_.end(), |
418 frame.metadata.latency_info.begin(), | 418 frame.metadata.latency_info.begin(), |
419 frame.metadata.latency_info.end()); | 419 frame.metadata.latency_info.end()); |
420 | 420 |
421 renderer_compositor_frame_sink_->DidReceiveCompositorFrameAck(resources); | 421 renderer_compositor_frame_sink_->DidReceiveCompositorFrameAck(resources); |
422 | 422 |
423 skipped_frames_ = true; | 423 skipped_frames_ = true; |
424 BeginFrameDidNotSwap(ack); | 424 DidNotProduceFrame(ack); |
425 return; | 425 return; |
426 } | 426 } |
427 | 427 |
428 // If we are allowing one renderer frame through, this would ensure the frame | 428 // If we are allowing one renderer frame through, this would ensure the frame |
429 // gets through even if we regrab the lock after the UI compositor makes one | 429 // gets through even if we regrab the lock after the UI compositor makes one |
430 // frame. If the renderer frame beats the UI compositor, then we don't need to | 430 // frame. If the renderer frame beats the UI compositor, then we don't need to |
431 // allow any more, though. | 431 // allow any more, though. |
432 allow_one_renderer_frame_during_resize_lock_ = false; | 432 allow_one_renderer_frame_during_resize_lock_ = false; |
433 | 433 |
434 if (skipped_frames_) { | 434 if (skipped_frames_) { |
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
862 } | 862 } |
863 | 863 |
864 if (!skipped_frames_) { | 864 if (!skipped_frames_) { |
865 latest_confirmed_begin_frame_source_id_ = ack.source_id; | 865 latest_confirmed_begin_frame_source_id_ = ack.source_id; |
866 latest_confirmed_begin_frame_sequence_number_ = | 866 latest_confirmed_begin_frame_sequence_number_ = |
867 ack.latest_confirmed_sequence_number; | 867 ack.latest_confirmed_sequence_number; |
868 } | 868 } |
869 } | 869 } |
870 | 870 |
871 } // namespace content | 871 } // namespace content |
OLD | NEW |