Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 510 sync_tree->SetPropertyTrees(&property_trees_); | 510 sync_tree->SetPropertyTrees(&property_trees_); |
| 511 | 511 |
| 512 sync_tree->PushPageScaleFromMainThread( | 512 sync_tree->PushPageScaleFromMainThread( |
| 513 page_scale_factor_, min_page_scale_factor_, max_page_scale_factor_); | 513 page_scale_factor_, min_page_scale_factor_, max_page_scale_factor_); |
| 514 sync_tree->elastic_overscroll()->PushFromMainThread(elastic_overscroll_); | 514 sync_tree->elastic_overscroll()->PushFromMainThread(elastic_overscroll_); |
| 515 if (sync_tree->IsActiveTree()) | 515 if (sync_tree->IsActiveTree()) |
| 516 sync_tree->elastic_overscroll()->PushPendingToActive(); | 516 sync_tree->elastic_overscroll()->PushPendingToActive(); |
| 517 | 517 |
| 518 sync_tree->PassSwapPromises(&swap_promise_list_); | 518 sync_tree->PassSwapPromises(&swap_promise_list_); |
| 519 | 519 |
| 520 for (auto& swap_promise : forced_redraw_swap_promises_) { | |
| 521 host_impl->QueueForcedRedrawSwapPromise(std::move(swap_promise)); | |
| 522 } | |
| 523 forced_redraw_swap_promises_.clear(); | |
| 524 | |
| 520 sync_tree->set_top_controls_shrink_blink_size( | 525 sync_tree->set_top_controls_shrink_blink_size( |
| 521 top_controls_shrink_blink_size_); | 526 top_controls_shrink_blink_size_); |
| 522 sync_tree->set_top_controls_height(top_controls_height_); | 527 sync_tree->set_top_controls_height(top_controls_height_); |
| 523 sync_tree->PushTopControlsFromMainThread(top_controls_shown_ratio_); | 528 sync_tree->PushTopControlsFromMainThread(top_controls_shown_ratio_); |
| 524 | 529 |
| 525 host_impl->SetHasGpuRasterizationTrigger(has_gpu_rasterization_trigger_); | 530 host_impl->SetHasGpuRasterizationTrigger(has_gpu_rasterization_trigger_); |
| 526 host_impl->SetContentIsSuitableForGpuRasterization( | 531 host_impl->SetContentIsSuitableForGpuRasterization( |
| 527 content_is_suitable_for_gpu_rasterization_); | 532 content_is_suitable_for_gpu_rasterization_); |
| 528 RecordGpuRasterizationHistogram(); | 533 RecordGpuRasterizationHistogram(); |
| 529 | 534 |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 742 return proxy_->BeginMainFrameRequested(); | 747 return proxy_->BeginMainFrameRequested(); |
| 743 } | 748 } |
| 744 | 749 |
| 745 void LayerTreeHost::SetNextCommitWaitsForActivation() { | 750 void LayerTreeHost::SetNextCommitWaitsForActivation() { |
| 746 proxy_->SetNextCommitWaitsForActivation(); | 751 proxy_->SetNextCommitWaitsForActivation(); |
| 747 } | 752 } |
| 748 | 753 |
| 749 void LayerTreeHost::SetNextCommitForcesRedraw() { | 754 void LayerTreeHost::SetNextCommitForcesRedraw() { |
| 750 next_commit_forces_redraw_ = true; | 755 next_commit_forces_redraw_ = true; |
| 751 proxy_->SetNeedsUpdateLayers(); | 756 proxy_->SetNeedsUpdateLayers(); |
| 757 NotifySwapPromiseMonitorsOfSetNeedsForcedRedraw(); | |
| 752 } | 758 } |
| 753 | 759 |
| 754 void LayerTreeHost::SetAnimationEvents( | 760 void LayerTreeHost::SetAnimationEvents( |
| 755 std::unique_ptr<AnimationEvents> events) { | 761 std::unique_ptr<AnimationEvents> events) { |
| 756 DCHECK(task_runner_provider_->IsMainThread()); | 762 DCHECK(task_runner_provider_->IsMainThread()); |
| 757 animation_host_->SetAnimationEvents(std::move(events)); | 763 animation_host_->SetAnimationEvents(std::move(events)); |
| 758 } | 764 } |
| 759 | 765 |
| 760 void LayerTreeHost::SetRootLayer(scoped_refptr<Layer> root_layer) { | 766 void LayerTreeHost::SetRootLayer(scoped_refptr<Layer> root_layer) { |
| 761 if (root_layer_.get() == root_layer.get()) | 767 if (root_layer_.get() == root_layer.get()) |
| (...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1278 void LayerTreeHost::RemoveSwapPromiseMonitor(SwapPromiseMonitor* monitor) { | 1284 void LayerTreeHost::RemoveSwapPromiseMonitor(SwapPromiseMonitor* monitor) { |
| 1279 swap_promise_monitor_.erase(monitor); | 1285 swap_promise_monitor_.erase(monitor); |
| 1280 } | 1286 } |
| 1281 | 1287 |
| 1282 void LayerTreeHost::NotifySwapPromiseMonitorsOfSetNeedsCommit() { | 1288 void LayerTreeHost::NotifySwapPromiseMonitorsOfSetNeedsCommit() { |
| 1283 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); | 1289 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); |
| 1284 for (; it != swap_promise_monitor_.end(); it++) | 1290 for (; it != swap_promise_monitor_.end(); it++) |
| 1285 (*it)->OnSetNeedsCommitOnMain(); | 1291 (*it)->OnSetNeedsCommitOnMain(); |
| 1286 } | 1292 } |
| 1287 | 1293 |
| 1294 void LayerTreeHost::NotifySwapPromiseMonitorsOfSetNeedsForcedRedraw() { | |
| 1295 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); | |
| 1296 for (; it != swap_promise_monitor_.end(); it++) | |
| 1297 (*it)->OnSetNeedsForcedRedrawOnMain(); | |
| 1298 } | |
| 1299 | |
| 1288 void LayerTreeHost::QueueSwapPromise( | 1300 void LayerTreeHost::QueueSwapPromise( |
| 1289 std::unique_ptr<SwapPromise> swap_promise) { | 1301 std::unique_ptr<SwapPromise> swap_promise) { |
| 1290 DCHECK(swap_promise); | 1302 DCHECK(swap_promise); |
| 1291 swap_promise_list_.push_back(std::move(swap_promise)); | 1303 swap_promise_list_.push_back(std::move(swap_promise)); |
| 1292 } | 1304 } |
| 1293 | 1305 |
| 1306 void LayerTreeHost::QueueForcedRedrawSwapPromise( | |
| 1307 std::unique_ptr<SwapPromise> swap_promise) { | |
| 1308 forced_redraw_swap_promises_.push_back(std::move(swap_promise)); | |
| 1309 } | |
| 1310 | |
| 1294 void LayerTreeHost::BreakSwapPromises(SwapPromise::DidNotSwapReason reason) { | 1311 void LayerTreeHost::BreakSwapPromises(SwapPromise::DidNotSwapReason reason) { |
| 1295 for (const auto& swap_promise : swap_promise_list_) | 1312 for (const auto& swap_promise : swap_promise_list_) |
| 1296 swap_promise->DidNotSwap(reason); | 1313 swap_promise->DidNotSwap(reason); |
| 1297 swap_promise_list_.clear(); | 1314 swap_promise_list_.clear(); |
|
piman
2016/07/28 20:54:09
You also need to break the forced_redraw_swap_prom
| |
| 1298 } | 1315 } |
| 1299 | 1316 |
| 1300 void LayerTreeHost::OnCommitForSwapPromises() { | 1317 void LayerTreeHost::OnCommitForSwapPromises() { |
| 1301 for (const auto& swap_promise : swap_promise_list_) | 1318 for (const auto& swap_promise : swap_promise_list_) |
| 1302 swap_promise->OnCommit(); | 1319 swap_promise->OnCommit(); |
| 1303 } | 1320 } |
| 1304 | 1321 |
| 1305 void LayerTreeHost::set_surface_client_id(uint32_t client_id) { | 1322 void LayerTreeHost::set_surface_client_id(uint32_t client_id) { |
| 1306 surface_client_id_ = client_id; | 1323 surface_client_id_ = client_id; |
| 1307 } | 1324 } |
| (...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1715 int seq_num = property_trees_.sequence_number; | 1732 int seq_num = property_trees_.sequence_number; |
| 1716 LayerTreeHostCommon::CallFunctionForEveryLayer(this, [seq_num](Layer* layer) { | 1733 LayerTreeHostCommon::CallFunctionForEveryLayer(this, [seq_num](Layer* layer) { |
| 1717 layer->set_property_tree_sequence_number(seq_num); | 1734 layer->set_property_tree_sequence_number(seq_num); |
| 1718 }); | 1735 }); |
| 1719 | 1736 |
| 1720 surface_client_id_ = proto.surface_client_id(); | 1737 surface_client_id_ = proto.surface_client_id(); |
| 1721 next_surface_sequence_ = proto.next_surface_sequence(); | 1738 next_surface_sequence_ = proto.next_surface_sequence(); |
| 1722 } | 1739 } |
| 1723 | 1740 |
| 1724 } // namespace cc | 1741 } // namespace cc |
| OLD | NEW |