| Index: cc/trees/layer_tree_impl.cc
|
| diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
|
| index 583d94219d1d9c2a3bd6ca8a5825fc861d3a7ed9..4f6179032d6b58c9b1faad31b936cc54c15c6cc8 100644
|
| --- a/cc/trees/layer_tree_impl.cc
|
| +++ b/cc/trees/layer_tree_impl.cc
|
| @@ -224,6 +224,10 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) {
|
| next_activation_forces_redraw_ = false;
|
| }
|
|
|
| + for (auto* swap_promise : pinned_swap_promise_list_)
|
| + swap_promise->DidActivate();
|
| + pinned_swap_promise_list_.clear();
|
| +
|
| target_tree->PassSwapPromises(&swap_promise_list_);
|
|
|
| target_tree->set_top_controls_shrink_blink_size(
|
| @@ -804,6 +808,7 @@ void LayerTreeImpl::DidBecomeActive() {
|
|
|
| for (auto* swap_promise : swap_promise_list_)
|
| swap_promise->DidActivate();
|
| +
|
| devtools_instrumentation::DidActivateLayerTree(layer_tree_host_impl_->id(),
|
| source_frame_number_);
|
| }
|
| @@ -1031,6 +1036,11 @@ void LayerTreeImpl::AsValueInto(base::trace_event::TracedValue* state) const {
|
| for (auto* swap_promise : swap_promise_list_)
|
| state->AppendDouble(swap_promise->TraceId());
|
| state->EndArray();
|
| +
|
| + state->BeginArray("pinned_swap_promise_trace_ids");
|
| + for (auto* swap_promise : pinned_swap_promise_list_)
|
| + state->AppendDouble(swap_promise->TraceId());
|
| + state->EndArray();
|
| }
|
|
|
| void LayerTreeImpl::SetRootLayerScrollOffsetDelegate(
|
| @@ -1108,23 +1118,37 @@ void LayerTreeImpl::QueueSwapPromise(scoped_ptr<SwapPromise> swap_promise) {
|
| swap_promise_list_.push_back(swap_promise.Pass());
|
| }
|
|
|
| +void LayerTreeImpl::QueuePinnedSwapPromise(
|
| + scoped_ptr<SwapPromise> swap_promise) {
|
| + DCHECK(swap_promise);
|
| + pinned_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();
|
| + for (auto* swap_promise : swap_promise_list_) {
|
| + swap_promise->DidNotSwap(SwapPromise::SWAP_FAILS);
|
| + }
|
| + swap_promise_list_.clear();
|
| + swap_promise_list_.swap(*new_swap_promise);
|
| }
|
|
|
| void LayerTreeImpl::FinishSwapPromises(CompositorFrameMetadata* metadata) {
|
| for (auto* swap_promise : swap_promise_list_)
|
| swap_promise->DidSwap(metadata);
|
| swap_promise_list_.clear();
|
| + for (auto* swap_promise : pinned_swap_promise_list_)
|
| + swap_promise->DidSwap(metadata);
|
| + pinned_swap_promise_list_.clear();
|
| }
|
|
|
| void LayerTreeImpl::BreakSwapPromises(SwapPromise::DidNotSwapReason reason) {
|
| for (auto* swap_promise : swap_promise_list_)
|
| swap_promise->DidNotSwap(reason);
|
| swap_promise_list_.clear();
|
| + for (auto* swap_promise : pinned_swap_promise_list_)
|
| + swap_promise->DidNotSwap(reason);
|
| + pinned_swap_promise_list_.clear();
|
| }
|
|
|
| void LayerTreeImpl::DidModifyTilePriorities() {
|
|
|