OLD | NEW |
---|---|
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" |
11 #include "cc/base/util.h" | 11 #include "cc/base/util.h" |
12 #include "cc/debug/traced_value.h" | 12 #include "cc/debug/traced_value.h" |
13 #include "cc/layers/heads_up_display_layer_impl.h" | 13 #include "cc/layers/heads_up_display_layer_impl.h" |
14 #include "cc/layers/layer.h" | 14 #include "cc/layers/layer.h" |
15 #include "cc/layers/render_surface_impl.h" | 15 #include "cc/layers/render_surface_impl.h" |
16 #include "cc/layers/scrollbar_layer_impl_base.h" | 16 #include "cc/layers/scrollbar_layer_impl_base.h" |
17 #include "cc/resources/ui_resource_request.h" | 17 #include "cc/resources/ui_resource_request.h" |
18 #include "cc/trees/layer_tree_host_common.h" | 18 #include "cc/trees/layer_tree_host_common.h" |
19 #include "cc/trees/layer_tree_host_impl.h" | 19 #include "cc/trees/layer_tree_host_impl.h" |
20 #include "ui/gfx/size_conversions.h" | 20 #include "ui/gfx/size_conversions.h" |
21 #include "ui/gfx/vector2d_conversions.h" | 21 #include "ui/gfx/vector2d_conversions.h" |
22 | 22 |
23 namespace { | |
24 const size_t kMaxQueuedSwapPromiseNumber = 100; | |
danakj
2013/11/13 23:22:09
Can we share these constants instead of duplicatin
Yufeng Shen (Slow to review)
2013/11/14 22:09:55
Moved to swap_promise.h
| |
25 } // namespace | |
26 | |
23 namespace cc { | 27 namespace cc { |
24 | 28 |
25 LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl) | 29 LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl) |
26 : layer_tree_host_impl_(layer_tree_host_impl), | 30 : layer_tree_host_impl_(layer_tree_host_impl), |
27 source_frame_number_(-1), | 31 source_frame_number_(-1), |
28 hud_layer_(0), | 32 hud_layer_(0), |
29 root_scroll_layer_(NULL), | 33 root_scroll_layer_(NULL), |
30 currently_scrolling_layer_(NULL), | 34 currently_scrolling_layer_(NULL), |
31 root_layer_scroll_offset_delegate_(NULL), | 35 root_layer_scroll_offset_delegate_(NULL), |
32 background_color_(0), | 36 background_color_(0), |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
115 // The request queue should have been processed and does not require a push. | 119 // The request queue should have been processed and does not require a push. |
116 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); | 120 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); |
117 | 121 |
118 if (next_activation_forces_redraw_) { | 122 if (next_activation_forces_redraw_) { |
119 layer_tree_host_impl_->SetFullRootLayerDamage(); | 123 layer_tree_host_impl_->SetFullRootLayerDamage(); |
120 next_activation_forces_redraw_ = false; | 124 next_activation_forces_redraw_ = false; |
121 } | 125 } |
122 | 126 |
123 target_tree->SetLatencyInfo(latency_info_); | 127 target_tree->SetLatencyInfo(latency_info_); |
124 latency_info_.Clear(); | 128 latency_info_.Clear(); |
129 | |
130 target_tree->TakeSwapPromise(&swap_promise_list_); | |
131 | |
125 target_tree->SetPageScaleFactorAndLimits( | 132 target_tree->SetPageScaleFactorAndLimits( |
126 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor()); | 133 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor()); |
127 target_tree->SetPageScaleDelta( | 134 target_tree->SetPageScaleDelta( |
128 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta()); | 135 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta()); |
129 target_tree->set_sent_page_scale_delta(1); | 136 target_tree->set_sent_page_scale_delta(1); |
130 | 137 |
131 if (settings().use_pinch_virtual_viewport) { | 138 if (settings().use_pinch_virtual_viewport) { |
132 target_tree->SetViewportLayersFromIds( | 139 target_tree->SetViewportLayersFromIds( |
133 page_scale_layer_->id(), | 140 page_scale_layer_->id(), |
134 inner_viewport_scroll_layer_->id(), | 141 inner_viewport_scroll_layer_->id(), |
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
701 } | 708 } |
702 | 709 |
703 const ui::LatencyInfo& LayerTreeImpl::GetLatencyInfo() { | 710 const ui::LatencyInfo& LayerTreeImpl::GetLatencyInfo() { |
704 return latency_info_; | 711 return latency_info_; |
705 } | 712 } |
706 | 713 |
707 void LayerTreeImpl::ClearLatencyInfo() { | 714 void LayerTreeImpl::ClearLatencyInfo() { |
708 latency_info_.Clear(); | 715 latency_info_.Clear(); |
709 } | 716 } |
710 | 717 |
718 void LayerTreeImpl::QueueSwapPromise(SwapPromise* swap_promise) { | |
danakj
2013/11/13 23:22:09
Same comments here as in LTH
Yufeng Shen (Slow to review)
2013/11/14 22:09:55
Done.
| |
719 if (swap_promise_list_.size() > kMaxQueuedSwapPromiseNumber) { | |
720 NOTREACHED() << "LayerTreeImpl::swap_promise_list overflows"; | |
721 BreakSwapPromise(SwapPromise::SWAP_PROMISE_LIST_OVERFLOW); | |
722 } | |
723 swap_promise_list_.push_back(swap_promise); | |
724 } | |
725 | |
726 void LayerTreeImpl::TakeSwapPromise( | |
727 ScopedVector<SwapPromise>* new_swap_promise) { | |
728 swap_promise_list_.insert(swap_promise_list_.end(), | |
729 new_swap_promise->begin(), | |
730 new_swap_promise->end()); | |
731 new_swap_promise->weak_clear(); | |
732 } | |
733 | |
734 void LayerTreeImpl::FinishSwapPromise() { | |
735 for (size_t i = 0; i < swap_promise_list_.size(); i++) { | |
736 swap_promise_list_[i]->DidSwap(); | |
737 } | |
738 swap_promise_list_.clear(); | |
739 } | |
740 | |
741 void LayerTreeImpl::BreakSwapPromise(SwapPromise::DidNotSwapReason reason) { | |
742 for (size_t i = 0; i < swap_promise_list_.size(); i++) { | |
743 swap_promise_list_[i]->DidNotSwap(reason); | |
744 } | |
745 swap_promise_list_.clear(); | |
746 } | |
747 | |
711 void LayerTreeImpl::DidModifyTilePriorities() { | 748 void LayerTreeImpl::DidModifyTilePriorities() { |
712 layer_tree_host_impl_->DidModifyTilePriorities(); | 749 layer_tree_host_impl_->DidModifyTilePriorities(); |
713 } | 750 } |
714 | 751 |
715 void LayerTreeImpl::set_ui_resource_request_queue( | 752 void LayerTreeImpl::set_ui_resource_request_queue( |
716 const UIResourceRequestQueue& queue) { | 753 const UIResourceRequestQueue& queue) { |
717 ui_resource_request_queue_ = queue; | 754 ui_resource_request_queue_ = queue; |
718 } | 755 } |
719 | 756 |
720 ResourceProvider::ResourceId LayerTreeImpl::ResourceIdForUIResource( | 757 ResourceProvider::ResourceId LayerTreeImpl::ResourceIdForUIResource( |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
777 const std::vector<LayerImpl*> LayerTreeImpl::LayersWithCopyOutputRequest() | 814 const std::vector<LayerImpl*> LayerTreeImpl::LayersWithCopyOutputRequest() |
778 const { | 815 const { |
779 // Only the active tree needs to know about layers with copy requests, as | 816 // Only the active tree needs to know about layers with copy requests, as |
780 // they are aborted if not serviced during draw. | 817 // they are aborted if not serviced during draw. |
781 DCHECK(IsActiveTree()); | 818 DCHECK(IsActiveTree()); |
782 | 819 |
783 return layers_with_copy_output_request_; | 820 return layers_with_copy_output_request_; |
784 } | 821 } |
785 | 822 |
786 } // namespace cc | 823 } // namespace cc |
OLD | NEW |