Chromium Code Reviews| Index: cc/trees/layer_tree_host.cc |
| diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc |
| index df82093bd91fe977a23dbef3f69241721ea482fe..d2d029d4e94c108e93f9ffa302700373702d9da9 100644 |
| --- a/cc/trees/layer_tree_host.cc |
| +++ b/cc/trees/layer_tree_host.cc |
| @@ -385,6 +385,8 @@ void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) { |
| sync_tree->SetLatencyInfo(latency_info_); |
| latency_info_.Clear(); |
| + sync_tree->PassSwapPromises(&swap_promise_list_); |
| + |
| host_impl->SetViewportSize(device_viewport_size_); |
| host_impl->SetOverdrawBottomHeight(overdraw_bottom_height_); |
| host_impl->SetDeviceScaleFactor(device_scale_factor_); |
| @@ -1268,4 +1270,20 @@ bool LayerTreeHost::ScheduleMicroBenchmark( |
| benchmark_name, value.Pass(), callback); |
| } |
| +void LayerTreeHost::QueueSwapPromise(scoped_ptr<SwapPromise> swap_promise) { |
| + if (proxy_->HasImplThread()) { |
| + DCHECK(proxy_->CommitRequested() || proxy_->BeginMainFrameRequested()); |
| + } |
| + DCHECK(swap_promise.get()); |
|
danakj
2013/11/26 17:34:19
nit: no .get() needed
Yufeng Shen (Slow to review)
2013/11/26 17:38:26
Done.
|
| + if (swap_promise_list_.size() > kMaxQueuedSwapPromiseNumber) |
| + BreakSwapPromises(SwapPromise::SWAP_PROMISE_LIST_OVERFLOW); |
| + swap_promise_list_.push_back(swap_promise.Pass()); |
| +} |
| + |
| +void LayerTreeHost::BreakSwapPromises(SwapPromise::DidNotSwapReason reason) { |
| + for (size_t i = 0; i < swap_promise_list_.size(); i++) |
| + swap_promise_list_[i]->DidNotSwap(reason); |
| + swap_promise_list_.clear(); |
| +} |
| + |
| } // namespace cc |