Chromium Code Reviews| Index: cc/trees/layer_tree_impl.cc |
| diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc |
| index 15bd750b13e24e02122ecaeb8df7579b692fe4cf..dcae12c5077a0fd9c2d7ff06375e047d6600e8dc 100644 |
| --- a/cc/trees/layer_tree_impl.cc |
| +++ b/cc/trees/layer_tree_impl.cc |
| @@ -20,6 +20,10 @@ |
| #include "ui/gfx/size_conversions.h" |
| #include "ui/gfx/vector2d_conversions.h" |
| +namespace { |
| +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
|
| +} // namespace |
| + |
| namespace cc { |
| LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl) |
| @@ -122,6 +126,9 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { |
| target_tree->SetLatencyInfo(latency_info_); |
| latency_info_.Clear(); |
| + |
| + target_tree->TakeSwapPromise(&swap_promise_list_); |
| + |
| target_tree->SetPageScaleFactorAndLimits( |
| page_scale_factor(), min_page_scale_factor(), max_page_scale_factor()); |
| target_tree->SetPageScaleDelta( |
| @@ -708,6 +715,36 @@ void LayerTreeImpl::ClearLatencyInfo() { |
| latency_info_.Clear(); |
| } |
| +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.
|
| + if (swap_promise_list_.size() > kMaxQueuedSwapPromiseNumber) { |
| + NOTREACHED() << "LayerTreeImpl::swap_promise_list overflows"; |
| + BreakSwapPromise(SwapPromise::SWAP_PROMISE_LIST_OVERFLOW); |
| + } |
| + swap_promise_list_.push_back(swap_promise); |
| +} |
| + |
| +void LayerTreeImpl::TakeSwapPromise( |
| + ScopedVector<SwapPromise>* new_swap_promise) { |
| + swap_promise_list_.insert(swap_promise_list_.end(), |
| + new_swap_promise->begin(), |
| + new_swap_promise->end()); |
| + new_swap_promise->weak_clear(); |
| +} |
| + |
| +void LayerTreeImpl::FinishSwapPromise() { |
| + for (size_t i = 0; i < swap_promise_list_.size(); i++) { |
| + swap_promise_list_[i]->DidSwap(); |
| + } |
| + swap_promise_list_.clear(); |
| +} |
| + |
| +void LayerTreeImpl::BreakSwapPromise(SwapPromise::DidNotSwapReason reason) { |
| + for (size_t i = 0; i < swap_promise_list_.size(); i++) { |
| + swap_promise_list_[i]->DidNotSwap(reason); |
| + } |
| + swap_promise_list_.clear(); |
| +} |
| + |
| void LayerTreeImpl::DidModifyTilePriorities() { |
| layer_tree_host_impl_->DidModifyTilePriorities(); |
| } |