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 ff048674af2bae33feb2d5987282c434be177d98..80db5f69502cc22930568decbbe0209b851d283f 100644 |
| --- a/cc/trees/layer_tree_impl.cc |
| +++ b/cc/trees/layer_tree_impl.cc |
| @@ -1031,6 +1031,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 +1113,38 @@ 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(IsActiveTree()); |
| + 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_) { |
|
danakj
2015/08/27 17:52:54
nit: don't need {} for 1 line
Tobias Sargeant
2015/08/28 10:58:09
Done.
|
| + 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() { |