| Index: cc/trees/layer_tree_impl.cc
|
| diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
|
| index 4604043663920750438b5de260b0d8a0249d36b2..aa923cb77382469d2c889ec52fdcf47148a16b9b 100644
|
| --- a/cc/trees/layer_tree_impl.cc
|
| +++ b/cc/trees/layer_tree_impl.cc
|
| @@ -17,6 +17,10 @@
|
| #include "ui/gfx/size_conversions.h"
|
| #include "ui/gfx/vector2d_conversions.h"
|
|
|
| +namespace {
|
| +const size_t kMaxQueuedSwapPromiseNumber = 100;
|
| +} // namespace
|
| +
|
| namespace cc {
|
|
|
| LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl)
|
| @@ -119,6 +123,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(
|
| @@ -696,6 +703,36 @@ void LayerTreeImpl::ClearLatencyInfo() {
|
| latency_info_.Clear();
|
| }
|
|
|
| +void LayerTreeImpl::QueueSwapPromise(const SwapPromise& swap_promise) {
|
| + if (swap_promise_list_.size() > kMaxQueuedSwapPromiseNumber) {
|
| + NOTREACHED() << "LayerTreeImpl::swap_promise_list overflows";
|
| + swap_promise_list_.clear();
|
| + }
|
| + swap_promise_list_.push_back(swap_promise);
|
| +}
|
| +
|
| +void LayerTreeImpl::TakeSwapPromise(
|
| + std::vector<SwapPromise>* new_swap_promise) {
|
| + swap_promise_list_.insert(swap_promise_list_.end(),
|
| + new_swap_promise->begin(),
|
| + new_swap_promise->end());
|
| + new_swap_promise->clear();
|
| +}
|
| +
|
| +void LayerTreeImpl::FinishSwapPromise() {
|
| + for (size_t i = 0; i < swap_promise_list_.size(); i++) {
|
| + swap_promise_list_[i].did_swap_callback.Run();
|
| + }
|
| + swap_promise_list_.clear();
|
| +}
|
| +
|
| +void LayerTreeImpl::BreakSwapPromise(const std::string& msg) {
|
| + for (size_t i = 0; i < swap_promise_list_.size(); i++) {
|
| + swap_promise_list_[i].swap_aborted_callback.Run(msg);
|
| + }
|
| + swap_promise_list_.clear();
|
| +}
|
| +
|
| void LayerTreeImpl::DidModifyTilePriorities() {
|
| layer_tree_host_impl_->DidModifyTilePriorities();
|
| }
|
|
|