Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(586)

Side by Side Diff: cc/trees/layer_tree_impl.cc

Issue 81533002: Use LatencyInfoSwapPromise to track LatencyInfo through compositor (Closed) Base URL: http://git.chromium.org/chromium/src.git@swap_promise_2
Patch Set: rebase Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "cc/trees/layer_tree_impl.h" 5 #include "cc/trees/layer_tree_impl.h"
6 6
7 #include "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "cc/animation/keyframed_animation_curve.h" 8 #include "cc/animation/keyframed_animation_curve.h"
9 #include "cc/animation/scrollbar_animation_controller.h" 9 #include "cc/animation/scrollbar_animation_controller.h"
10 #include "cc/base/math_util.h" 10 #include "cc/base/math_util.h"
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 113
114 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { 114 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) {
115 // The request queue should have been processed and does not require a push. 115 // The request queue should have been processed and does not require a push.
116 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); 116 DCHECK_EQ(ui_resource_request_queue_.size(), 0u);
117 117
118 if (next_activation_forces_redraw_) { 118 if (next_activation_forces_redraw_) {
119 layer_tree_host_impl_->SetFullRootLayerDamage(); 119 layer_tree_host_impl_->SetFullRootLayerDamage();
120 next_activation_forces_redraw_ = false; 120 next_activation_forces_redraw_ = false;
121 } 121 }
122 122
123 target_tree->SetLatencyInfo(latency_info_);
124 latency_info_.Clear();
125
126 target_tree->PassSwapPromises(&swap_promise_list_); 123 target_tree->PassSwapPromises(&swap_promise_list_);
127 124
128 target_tree->SetPageScaleFactorAndLimits( 125 target_tree->SetPageScaleFactorAndLimits(
129 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor()); 126 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor());
130 target_tree->SetPageScaleDelta( 127 target_tree->SetPageScaleDelta(
131 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta()); 128 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta());
132 target_tree->set_sent_page_scale_delta(1); 129 target_tree->set_sent_page_scale_delta(1);
133 130
134 if (settings().use_pinch_virtual_viewport) { 131 if (settings().use_pinch_virtual_viewport) {
135 target_tree->SetViewportLayersFromIds( 132 target_tree->SetViewportLayersFromIds(
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 454
458 void LayerTreeImpl::UnregisterLayer(LayerImpl* layer) { 455 void LayerTreeImpl::UnregisterLayer(LayerImpl* layer) {
459 DCHECK(LayerById(layer->id())); 456 DCHECK(LayerById(layer->id()));
460 layer_id_map_.erase(layer->id()); 457 layer_id_map_.erase(layer->id());
461 } 458 }
462 459
463 void LayerTreeImpl::PushPersistedState(LayerTreeImpl* pending_tree) { 460 void LayerTreeImpl::PushPersistedState(LayerTreeImpl* pending_tree) {
464 pending_tree->SetCurrentlyScrollingLayer( 461 pending_tree->SetCurrentlyScrollingLayer(
465 LayerTreeHostCommon::FindLayerInSubtree(pending_tree->root_layer(), 462 LayerTreeHostCommon::FindLayerInSubtree(pending_tree->root_layer(),
466 currently_scrolling_layer_ ? currently_scrolling_layer_->id() : 0)); 463 currently_scrolling_layer_ ? currently_scrolling_layer_->id() : 0));
467 pending_tree->SetLatencyInfo(latency_info_);
468 latency_info_.Clear();
469 } 464 }
470 465
471 static void DidBecomeActiveRecursive(LayerImpl* layer) { 466 static void DidBecomeActiveRecursive(LayerImpl* layer) {
472 layer->DidBecomeActive(); 467 layer->DidBecomeActive();
473 for (size_t i = 0; i < layer->children().size(); ++i) 468 for (size_t i = 0; i < layer->children().size(); ++i)
474 DidBecomeActiveRecursive(layer->children()[i]); 469 DidBecomeActiveRecursive(layer->children()[i]);
475 } 470 }
476 471
477 void LayerTreeImpl::DidBecomeActive() { 472 void LayerTreeImpl::DidBecomeActive() {
478 if (!root_layer()) 473 if (!root_layer())
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 687
693 gfx::Vector2dF original_viewport_size = 688 gfx::Vector2dF original_viewport_size =
694 gfx::RectF(root_container->bounds()).bottom_right() - 689 gfx::RectF(root_container->bounds()).bottom_right() -
695 gfx::PointF(); 690 gfx::PointF();
696 original_viewport_size.Scale(1 / page_scale_factor()); 691 original_viewport_size.Scale(1 / page_scale_factor());
697 692
698 root_scroll->SetFixedContainerSizeDelta( 693 root_scroll->SetFixedContainerSizeDelta(
699 scrollable_viewport_size - original_viewport_size); 694 scrollable_viewport_size - original_viewport_size);
700 } 695 }
701 696
702 void LayerTreeImpl::SetLatencyInfo(const ui::LatencyInfo& latency_info) { 697 // TODO(miletus): The merge here is a temporary hack. Should change the
703 latency_info_.MergeWith(latency_info); 698 // function to be
704 } 699 // TakeLatencyInfo(std::vector<ui::LatencyInfo>* latency_info)
705 700 // Once we remove the LatencyInfo merge in the gpu side.
706 const ui::LatencyInfo& LayerTreeImpl::GetLatencyInfo() { 701 void LayerTreeImpl::TakeLatencyInfo(ui::LatencyInfo* latency_info) {
danakj 2013/11/26 19:17:53 Why isn't this going through the DidSwap() method?
Yufeng Shen (Slow to review) 2013/11/27 20:05:33 Removed. Changed the DidSwap() signature to be vi
707 return latency_info_; 702 ScopedPtrVector<SwapPromise>::iterator it = swap_promise_list_.begin();
708 } 703 for (; it != swap_promise_list_.end(); it++) {
709 704 if ((*it) && ((*it)->type() == SwapPromise::SWAP_PROMISE_LATENCY_INFO)) {
710 void LayerTreeImpl::ClearLatencyInfo() { 705 latency_info->MergeWith(
711 latency_info_.Clear(); 706 (static_cast<LatencyInfoSwapPromise*>(*it))->GetLatencyInfo());
707 }
708 }
712 } 709 }
713 710
714 void LayerTreeImpl::QueueSwapPromise(scoped_ptr<SwapPromise> swap_promise) { 711 void LayerTreeImpl::QueueSwapPromise(scoped_ptr<SwapPromise> swap_promise) {
715 if (swap_promise_list_.size() > kMaxQueuedSwapPromiseNumber) 712 if (swap_promise_list_.size() > kMaxQueuedSwapPromiseNumber)
716 BreakSwapPromises(SwapPromise::SWAP_PROMISE_LIST_OVERFLOW); 713 BreakSwapPromises(SwapPromise::SWAP_PROMISE_LIST_OVERFLOW);
717 swap_promise_list_.push_back(swap_promise.Pass()); 714 swap_promise_list_.push_back(swap_promise.Pass());
718 } 715 }
719 716
720 void LayerTreeImpl::PassSwapPromises( 717 void LayerTreeImpl::PassSwapPromises(
721 ScopedPtrVector<SwapPromise>* new_swap_promise) { 718 ScopedPtrVector<SwapPromise>* new_swap_promise) {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 const std::vector<LayerImpl*> LayerTreeImpl::LayersWithCopyOutputRequest() 806 const std::vector<LayerImpl*> LayerTreeImpl::LayersWithCopyOutputRequest()
810 const { 807 const {
811 // Only the active tree needs to know about layers with copy requests, as 808 // Only the active tree needs to know about layers with copy requests, as
812 // they are aborted if not serviced during draw. 809 // they are aborted if not serviced during draw.
813 DCHECK(IsActiveTree()); 810 DCHECK(IsActiveTree());
814 811
815 return layers_with_copy_output_request_; 812 return layers_with_copy_output_request_;
816 } 813 }
817 814
818 } // namespace cc 815 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698