Chromium Code Reviews| Index: cc/trees/layer_tree_host_in_process.cc |
| diff --git a/cc/trees/layer_tree_host_in_process.cc b/cc/trees/layer_tree_host_in_process.cc |
| index 138f16bdd7aa2a67b95a4e7550f6c82bd080db44..32b9883fd9022cce5f3491acae83e87bc692687a 100644 |
| --- a/cc/trees/layer_tree_host_in_process.cc |
| +++ b/cc/trees/layer_tree_host_in_process.cc |
| @@ -452,7 +452,10 @@ void LayerTreeHostInProcess::FinishCommitOnImplThread( |
| if (layer_tree_->needs_full_tree_sync()) |
| TreeSynchronizer::SynchronizeTrees(layer_tree_->root_layer(), sync_tree); |
| - layer_tree_->PushPropertiesTo(sync_tree); |
| + float page_scale_delta = 1.f; |
| + if (reflected_main_frame_state_) |
| + page_scale_delta = reflected_main_frame_state_->page_scale_delta; |
| + layer_tree_->PushPropertiesTo(sync_tree, page_scale_delta); |
| sync_tree->PassSwapPromises(swap_promise_manager_.TakeSwapPromises()); |
| @@ -473,6 +476,19 @@ void LayerTreeHostInProcess::FinishCommitOnImplThread( |
| TreeSynchronizer::PushLayerProperties(layer_tree_.get(), sync_tree); |
| + if (reflected_main_frame_state_) { |
| + for (const auto& scroll_update : reflected_main_frame_state_->scrolls) { |
| + int layer_id = scroll_update.layer_id; |
| + gfx::Vector2d scroll_delta = scroll_update.scroll_delta; |
|
aelias_OOO_until_Jul13
2016/10/28 03:40:20
gfx::Vector2dF
Khushal
2016/10/31 21:02:01
Done.
|
| + |
| + PropertyTrees* property_trees = layer_tree_->property_trees(); |
| + property_trees->scroll_tree.SetScrollOffset( |
| + layer_id, gfx::ScrollOffsetWithDelta( |
| + layer_tree_->LayerById(layer_id)->scroll_offset(), |
| + scroll_delta)); |
| + } |
| + } |
| + |
| // This must happen after synchronizing property trees and after pushing |
| // properties, which updates the clobber_active_value flag. |
| sync_tree->UpdatePropertyTreeScrollOffset(layer_tree_->property_trees()); |
| @@ -492,6 +508,7 @@ void LayerTreeHostInProcess::FinishCommitOnImplThread( |
| micro_benchmark_controller_.ScheduleImplBenchmarks(host_impl); |
| layer_tree_->property_trees()->ResetAllChangeTracking(); |
| + reflected_main_frame_state_ = nullptr; |
| } |
| void LayerTreeHostInProcess::WillCommit() { |
| @@ -882,6 +899,14 @@ void LayerTreeHostInProcess::ApplyScrollAndScale(ScrollAndScaleSet* info) { |
| ApplyViewportDeltas(info); |
| } |
| +void LayerTreeHostInProcess::SetReflectedMainFrameState( |
| + std::unique_ptr<ReflectedMainFrameState> reflected_main_frame_state) { |
| + DCHECK(IsThreaded()); |
| + |
| + reflected_main_frame_state_ = std::move(reflected_main_frame_state); |
| + SetNeedsCommit(); |
| +} |
| + |
| const base::WeakPtr<InputHandler>& LayerTreeHostInProcess::GetInputHandler() |
| const { |
| return input_handler_weak_ptr_; |