| 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::BeginFrameDidNotProduceFrame( |
| 223 const cc::BeginFrameAck& ack) { |
| 223 DidFinishFrame(ack); | 224 DidFinishFrame(ack); |
| 224 | 225 |
| 225 cc::BeginFrameAck modified_ack = ack; | 226 cc::BeginFrameAck modified_ack = ack; |
| 226 if (skipped_frames_) { | 227 if (skipped_frames_) { |
| 227 // If we skipped the last frame(s), we didn't incorporate the last | 228 // 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 | 229 // CompositorFrame's damage, so need to wait for the next one before |
| 229 // confirming newer sequence numbers. | 230 // confirming newer sequence numbers. |
| 230 modified_ack.has_damage = false; | 231 modified_ack.has_damage = false; |
| 231 modified_ack.latest_confirmed_sequence_number = | 232 modified_ack.latest_confirmed_sequence_number = |
| 232 latest_confirmed_begin_frame_sequence_number_; | 233 latest_confirmed_begin_frame_sequence_number_; |
| 233 } | 234 } |
| 234 | 235 |
| 235 support_->BeginFrameDidNotSwap(modified_ack); | 236 support_->BeginFrameDidNotProduceFrame(modified_ack); |
| 236 } | 237 } |
| 237 | 238 |
| 238 bool DelegatedFrameHost::ShouldSkipFrame(const gfx::Size& size_in_dip) { | 239 bool DelegatedFrameHost::ShouldSkipFrame(const gfx::Size& size_in_dip) { |
| 239 if (!resize_lock_) | 240 if (!resize_lock_) |
| 240 return false; | 241 return false; |
| 241 // Allow a single renderer frame through even though there's a resize lock | 242 // Allow a single renderer frame through even though there's a resize lock |
| 242 // currently in place. | 243 // currently in place. |
| 243 if (allow_one_renderer_frame_during_resize_lock_) { | 244 if (allow_one_renderer_frame_during_resize_lock_) { |
| 244 allow_one_renderer_frame_during_resize_lock_ = false; | 245 allow_one_renderer_frame_during_resize_lock_ = false; |
| 245 return false; | 246 return false; |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 414 cc::ReturnedResourceArray resources; | 415 cc::ReturnedResourceArray resources; |
| 415 cc::TransferableResource::ReturnResources(frame.resource_list, &resources); | 416 cc::TransferableResource::ReturnResources(frame.resource_list, &resources); |
| 416 | 417 |
| 417 skipped_latency_info_list_.insert(skipped_latency_info_list_.end(), | 418 skipped_latency_info_list_.insert(skipped_latency_info_list_.end(), |
| 418 frame.metadata.latency_info.begin(), | 419 frame.metadata.latency_info.begin(), |
| 419 frame.metadata.latency_info.end()); | 420 frame.metadata.latency_info.end()); |
| 420 | 421 |
| 421 renderer_compositor_frame_sink_->DidReceiveCompositorFrameAck(resources); | 422 renderer_compositor_frame_sink_->DidReceiveCompositorFrameAck(resources); |
| 422 | 423 |
| 423 skipped_frames_ = true; | 424 skipped_frames_ = true; |
| 424 BeginFrameDidNotSwap(ack); | 425 BeginFrameDidNotProduceFrame(ack); |
| 425 return; | 426 return; |
| 426 } | 427 } |
| 427 | 428 |
| 428 // If we are allowing one renderer frame through, this would ensure the frame | 429 // 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 | 430 // 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 | 431 // frame. If the renderer frame beats the UI compositor, then we don't need to |
| 431 // allow any more, though. | 432 // allow any more, though. |
| 432 allow_one_renderer_frame_during_resize_lock_ = false; | 433 allow_one_renderer_frame_during_resize_lock_ = false; |
| 433 | 434 |
| 434 if (skipped_frames_) { | 435 if (skipped_frames_) { |
| (...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 862 } | 863 } |
| 863 | 864 |
| 864 if (!skipped_frames_) { | 865 if (!skipped_frames_) { |
| 865 latest_confirmed_begin_frame_source_id_ = ack.source_id; | 866 latest_confirmed_begin_frame_source_id_ = ack.source_id; |
| 866 latest_confirmed_begin_frame_sequence_number_ = | 867 latest_confirmed_begin_frame_sequence_number_ = |
| 867 ack.latest_confirmed_sequence_number; | 868 ack.latest_confirmed_sequence_number; |
| 868 } | 869 } |
| 869 } | 870 } |
| 870 | 871 |
| 871 } // namespace content | 872 } // namespace content |
| OLD | NEW |