Chromium Code Reviews| 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 |