Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Side by Side Diff: cc/test/fake_layer_tree_host.cc

Issue 1808373002: cc : Make tree synchronization independent of layer tree hierarchy (2) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/test/fake_layer_tree_host.h" 5 #include "cc/test/fake_layer_tree_host.h"
6 6
7 #include "cc/layers/layer.h" 7 #include "cc/layers/layer.h"
8 #include "cc/test/fake_image_serialization_processor.h" 8 #include "cc/test/fake_image_serialization_processor.h"
9 #include "cc/test/test_task_graph_runner.h" 9 #include "cc/test/test_task_graph_runner.h"
10 10
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 } 81 }
82 82
83 void FakeLayerTreeHost::SetNeedsCommit() { needs_commit_ = true; } 83 void FakeLayerTreeHost::SetNeedsCommit() { needs_commit_ = true; }
84 84
85 LayerImpl* FakeLayerTreeHost::CommitAndCreateLayerImplTree() { 85 LayerImpl* FakeLayerTreeHost::CommitAndCreateLayerImplTree() {
86 scoped_ptr<LayerImpl> old_root_layer_impl = active_tree()->DetachLayerTree(); 86 scoped_ptr<LayerImpl> old_root_layer_impl = active_tree()->DetachLayerTree();
87 87
88 scoped_ptr<LayerImpl> layer_impl = TreeSynchronizer::SynchronizeTrees( 88 scoped_ptr<LayerImpl> layer_impl = TreeSynchronizer::SynchronizeTrees(
89 root_layer(), std::move(old_root_layer_impl), active_tree()); 89 root_layer(), std::move(old_root_layer_impl), active_tree());
90 active_tree()->SetPropertyTrees(*property_trees()); 90 active_tree()->SetPropertyTrees(*property_trees());
91 TreeSynchronizer::PushProperties(root_layer(), layer_impl.get()); 91 std::unordered_set<Layer*> layers_that_should_push_properties =
92 root_layer()->layer_tree_host()->LayersThatShouldPushProperties();
93 for (auto layer : layers_that_should_push_properties) {
94 LayerImpl* impl_layer = active_tree()->LayerById(layer->id());
95 layer->PushPropertiesTo(impl_layer);
96 }
92 97
93 active_tree()->SetRootLayer(std::move(layer_impl)); 98 active_tree()->SetRootLayer(std::move(layer_impl));
94 active_tree()->UpdatePropertyTreeScrollOffset(property_trees()); 99 active_tree()->UpdatePropertyTreeScrollOffset(property_trees());
95 100
96 if (page_scale_layer() && inner_viewport_scroll_layer()) { 101 if (page_scale_layer() && inner_viewport_scroll_layer()) {
97 active_tree()->SetViewportLayersFromIds( 102 active_tree()->SetViewportLayersFromIds(
98 overscroll_elasticity_layer() ? overscroll_elasticity_layer()->id() 103 overscroll_elasticity_layer() ? overscroll_elasticity_layer()->id()
99 : Layer::INVALID_ID, 104 : Layer::INVALID_ID,
100 page_scale_layer()->id(), inner_viewport_scroll_layer()->id(), 105 page_scale_layer()->id(), inner_viewport_scroll_layer()->id(),
101 outer_viewport_scroll_layer() ? outer_viewport_scroll_layer()->id() 106 outer_viewport_scroll_layer() ? outer_viewport_scroll_layer()->id()
102 : Layer::INVALID_ID); 107 : Layer::INVALID_ID);
103 } 108 }
104 109
105 active_tree()->UpdatePropertyTreesForBoundsDelta(); 110 active_tree()->UpdatePropertyTreesForBoundsDelta();
106 return active_tree()->root_layer(); 111 return active_tree()->root_layer();
107 } 112 }
108 113
109 LayerImpl* FakeLayerTreeHost::CommitAndCreatePendingTree() { 114 LayerImpl* FakeLayerTreeHost::CommitAndCreatePendingTree() {
110 scoped_ptr<LayerImpl> old_root_layer_impl = pending_tree()->DetachLayerTree(); 115 scoped_ptr<LayerImpl> old_root_layer_impl = pending_tree()->DetachLayerTree();
111 116
112 scoped_ptr<LayerImpl> layer_impl = TreeSynchronizer::SynchronizeTrees( 117 scoped_ptr<LayerImpl> layer_impl = TreeSynchronizer::SynchronizeTrees(
113 root_layer(), std::move(old_root_layer_impl), pending_tree()); 118 root_layer(), std::move(old_root_layer_impl), pending_tree());
114 pending_tree()->SetPropertyTrees(*property_trees()); 119 pending_tree()->SetPropertyTrees(*property_trees());
115 TreeSynchronizer::PushProperties(root_layer(), layer_impl.get()); 120 std::unordered_set<Layer*> layers_that_should_push_properties =
121 root_layer()->layer_tree_host()->LayersThatShouldPushProperties();
122 for (auto layer : layers_that_should_push_properties) {
123 LayerImpl* impl_layer = pending_tree()->LayerById(layer->id());
124 layer->PushPropertiesTo(impl_layer);
ajuma 2016/03/18 14:33:15 How about putting this in a method in TreeSynchron
jaydasika 2016/03/19 02:17:58 Done.
125 }
116 126
117 pending_tree()->SetRootLayer(std::move(layer_impl)); 127 pending_tree()->SetRootLayer(std::move(layer_impl));
118 pending_tree()->UpdatePropertyTreeScrollOffset(property_trees()); 128 pending_tree()->UpdatePropertyTreeScrollOffset(property_trees());
119 return pending_tree()->root_layer(); 129 return pending_tree()->root_layer();
120 } 130 }
121 131
122 } // namespace cc 132 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698