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

Side by Side Diff: cc/trees/property_tree.cc

Issue 2762123004: cc: LayerTreeHostImpl uses element id to tick animations (Closed)
Patch Set: review comments Created 3 years, 8 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 } 177 }
178 178
179 TransformNode* TransformTree::FindNodeFromElementId(ElementId id) { 179 TransformNode* TransformTree::FindNodeFromElementId(ElementId id) {
180 auto iterator = property_trees()->element_id_to_transform_node_index.find(id); 180 auto iterator = property_trees()->element_id_to_transform_node_index.find(id);
181 if (iterator == property_trees()->element_id_to_transform_node_index.end()) 181 if (iterator == property_trees()->element_id_to_transform_node_index.end())
182 return nullptr; 182 return nullptr;
183 183
184 return Node(iterator->second); 184 return Node(iterator->second);
185 } 185 }
186 186
187 void TransformTree::OnTransformAnimated(const gfx::Transform& transform, 187 bool TransformTree::OnTransformAnimated(ElementId element_id,
188 int id, 188 const gfx::Transform& transform) {
189 LayerTreeImpl* layer_tree_impl) { 189 TransformNode* node = FindNodeFromElementId(element_id);
190 TransformNode* node = Node(id); 190 DCHECK(node);
191 layer_tree_impl->AddToTransformAnimationsMap(node->owning_layer_id, 191 if (node->local == transform)
192 transform); 192 return false;
193 if (node->local == transform) {
194 return;
195 }
196 node->local = transform; 193 node->local = transform;
197 node->needs_local_transform_update = true; 194 node->needs_local_transform_update = true;
198 node->transform_changed = true; 195 node->transform_changed = true;
199 property_trees()->changed = true; 196 property_trees()->changed = true;
200 set_needs_update(true); 197 set_needs_update(true);
201 layer_tree_impl->set_needs_update_draw_properties(); 198 return true;
202 } 199 }
203 200
204 bool TransformTree::NeedsSourceToParentUpdate(TransformNode* node) { 201 bool TransformTree::NeedsSourceToParentUpdate(TransformNode* node) {
205 return (source_to_parent_updates_allowed() && 202 return (source_to_parent_updates_allowed() &&
206 node->parent_id != node->source_node_id); 203 node->parent_id != node->source_node_id);
207 } 204 }
208 205
209 void TransformTree::ResetChangeTracking() { 206 void TransformTree::ResetChangeTracking() {
210 for (int id = TransformTree::kContentsRootNodeId; 207 for (int id = TransformTree::kContentsRootNodeId;
211 id < static_cast<int>(size()); ++id) { 208 id < static_cast<int>(size()); ++id) {
(...skipping 644 matching lines...) Expand 10 before | Expand all | Expand 10 after
856 } 853 }
857 854
858 EffectNode* EffectTree::FindNodeFromElementId(ElementId id) { 855 EffectNode* EffectTree::FindNodeFromElementId(ElementId id) {
859 auto iterator = property_trees()->element_id_to_effect_node_index.find(id); 856 auto iterator = property_trees()->element_id_to_effect_node_index.find(id);
860 if (iterator == property_trees()->element_id_to_effect_node_index.end()) 857 if (iterator == property_trees()->element_id_to_effect_node_index.end())
861 return nullptr; 858 return nullptr;
862 859
863 return Node(iterator->second); 860 return Node(iterator->second);
864 } 861 }
865 862
866 void EffectTree::OnOpacityAnimated(float opacity, 863 bool EffectTree::OnOpacityAnimated(ElementId id, float opacity) {
867 int id, 864 EffectNode* node = FindNodeFromElementId(id);
868 LayerTreeImpl* layer_tree_impl) { 865 DCHECK(node);
869 EffectNode* node = Node(id);
870 layer_tree_impl->AddToOpacityAnimationsMap(node->owning_layer_id, opacity);
871 if (node->opacity == opacity) 866 if (node->opacity == opacity)
872 return; 867 return false;
873 node->opacity = opacity; 868 node->opacity = opacity;
874 node->effect_changed = true; 869 node->effect_changed = true;
875 property_trees()->changed = true; 870 property_trees()->changed = true;
876 property_trees()->effect_tree.set_needs_update(true); 871 property_trees()->effect_tree.set_needs_update(true);
877 layer_tree_impl->set_needs_update_draw_properties(); 872 return true;
878 } 873 }
879 874
880 void EffectTree::OnFilterAnimated(const FilterOperations& filters, 875 bool EffectTree::OnFilterAnimated(ElementId id,
881 int id, 876 const FilterOperations& filters) {
882 LayerTreeImpl* layer_tree_impl) { 877 EffectNode* node = FindNodeFromElementId(id);
883 EffectNode* node = Node(id); 878 DCHECK(node);
884 layer_tree_impl->AddToFilterAnimationsMap(node->owning_layer_id, filters);
885 if (node->filters == filters) 879 if (node->filters == filters)
886 return; 880 return false;
887 node->filters = filters; 881 node->filters = filters;
888 node->effect_changed = true; 882 node->effect_changed = true;
889 property_trees()->changed = true; 883 property_trees()->changed = true;
890 property_trees()->effect_tree.set_needs_update(true); 884 property_trees()->effect_tree.set_needs_update(true);
891 layer_tree_impl->set_needs_update_draw_properties(); 885 return true;
892 } 886 }
893 887
894 void EffectTree::UpdateEffects(int id) { 888 void EffectTree::UpdateEffects(int id) {
895 EffectNode* node = Node(id); 889 EffectNode* node = Node(id);
896 EffectNode* parent_node = parent(node); 890 EffectNode* parent_node = parent(node);
897 891
898 UpdateOpacities(node, parent_node); 892 UpdateOpacities(node, parent_node);
899 UpdateIsDrawn(node, parent_node); 893 UpdateIsDrawn(node, parent_node);
900 UpdateEffectChanged(node, parent_node); 894 UpdateEffectChanged(node, parent_node);
901 UpdateBackfaceVisibility(node, parent_node); 895 UpdateBackfaceVisibility(node, parent_node);
(...skipping 1215 matching lines...) Expand 10 before | Expand all | Expand 10 after
2117 const EffectNode* effect_node = effect_tree.Node(effect_id); 2111 const EffectNode* effect_node = effect_tree.Node(effect_id);
2118 2112
2119 if (effect_node->surface_contents_scale.x() != 0.0 && 2113 if (effect_node->surface_contents_scale.x() != 0.0 &&
2120 effect_node->surface_contents_scale.y() != 0.0) 2114 effect_node->surface_contents_scale.y() != 0.0)
2121 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(), 2115 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(),
2122 1.0 / effect_node->surface_contents_scale.y()); 2116 1.0 / effect_node->surface_contents_scale.y());
2123 return screen_space_transform; 2117 return screen_space_transform;
2124 } 2118 }
2125 2119
2126 } // namespace cc 2120 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698