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..1a2b93d4ea873a8cba9f72b37464e5be9fa41731 100644 |
| --- a/cc/trees/layer_tree_impl.cc |
| +++ b/cc/trees/layer_tree_impl.cc |
| @@ -122,6 +122,9 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { |
| target_tree->SetLatencyInfo(latency_info_); |
| latency_info_.Clear(); |
| + |
| + target_tree->PassSwapPromises(&swap_promise_list_); |
| + |
| target_tree->SetPageScaleFactorAndLimits( |
| page_scale_factor(), min_page_scale_factor(), max_page_scale_factor()); |
| target_tree->SetPageScaleDelta( |
| @@ -708,6 +711,35 @@ void LayerTreeImpl::ClearLatencyInfo() { |
| latency_info_.Clear(); |
| } |
| +void LayerTreeImpl::QueueSwapPromise(scoped_ptr<SwapPromise> swap_promise) { |
| + if (swap_promise_list_.size() > kMaxQueuedSwapPromiseNumber) |
| + BreakSwapPromises(SwapPromise::SWAP_PROMISE_LIST_OVERFLOW); |
| + swap_promise_list_.push_back(swap_promise.Pass()); |
| +} |
| + |
| +void LayerTreeImpl::PassSwapPromises( |
| + ScopedPtrVector<SwapPromise>* new_swap_promise) { |
| + swap_promise_list_.insert_and_take(swap_promise_list_.end(), |
| + *new_swap_promise); |
| + new_swap_promise->clear(); |
| +} |
| + |
| +void LayerTreeImpl::FinishSwapPromises() { |
| + for (size_t i = 0; i < swap_promise_list_.size(); i++) { |
| + DCHECK(swap_promise_list_[i]); |
|
danakj
2013/11/26 16:24:37
Same here, move to QueueSwapPromise?
Yufeng Shen (Slow to review)
2013/11/26 17:30:34
Done.
|
| + swap_promise_list_[i]->DidSwap(); |
| + } |
| + swap_promise_list_.clear(); |
| +} |
| + |
| +void LayerTreeImpl::BreakSwapPromises(SwapPromise::DidNotSwapReason reason) { |
| + for (size_t i = 0; i < swap_promise_list_.size(); i++) { |
| + DCHECK(swap_promise_list_[i]); |
| + swap_promise_list_[i]->DidNotSwap(reason); |
| + } |
| + swap_promise_list_.clear(); |
| +} |
| + |
| void LayerTreeImpl::DidModifyTilePriorities() { |
| layer_tree_host_impl_->DidModifyTilePriorities(); |
| } |