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

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

Issue 2753933005: cc: Move Layer Id to Node Map to Individual Property Tree Private (Closed)
Patch Set: add virtual to desctructor of ptree Created 3 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 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_impl.h" 5 #include "cc/trees/layer_tree_impl.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 706 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 // animations into their own trees. Then scrolls and animations would have 717 // animations into their own trees. Then scrolls and animations would have
718 // their own ways of synchronizing across commits. This occurs to push 718 // their own ways of synchronizing across commits. This occurs to push
719 // updates from scrolling deltas on the compositor thread that have occurred 719 // updates from scrolling deltas on the compositor thread that have occurred
720 // after begin frame and updates from animations that have ticked since begin 720 // after begin frame and updates from animations that have ticked since begin
721 // frame to a newly-committed property tree. 721 // frame to a newly-committed property tree.
722 if (layer_list_.empty()) 722 if (layer_list_.empty())
723 return; 723 return;
724 std::vector<int> layer_ids_to_remove; 724 std::vector<int> layer_ids_to_remove;
725 for (auto& layer_id_to_opacity : opacity_animations_map_) { 725 for (auto& layer_id_to_opacity : opacity_animations_map_) {
726 const int id = layer_id_to_opacity.first; 726 const int id = layer_id_to_opacity.first;
727 if (property_trees_.IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id)) { 727 if (EffectNode* node = property_trees_.effect_tree.FindNodeFromId(id)) {
728 EffectNode* node = property_trees_.effect_tree.Node(
729 property_trees_.layer_id_to_effect_node_index[id]);
730 if (!node->is_currently_animating_opacity || 728 if (!node->is_currently_animating_opacity ||
731 node->opacity == layer_id_to_opacity.second) { 729 node->opacity == layer_id_to_opacity.second) {
732 layer_ids_to_remove.push_back(id); 730 layer_ids_to_remove.push_back(id);
733 continue; 731 continue;
734 } 732 }
735 node->opacity = layer_id_to_opacity.second; 733 node->opacity = layer_id_to_opacity.second;
736 property_trees_.effect_tree.set_needs_update(true); 734 property_trees_.effect_tree.set_needs_update(true);
737 } 735 }
738 } 736 }
739 for (auto id : layer_ids_to_remove) 737 for (auto id : layer_ids_to_remove)
740 opacity_animations_map_.erase(id); 738 opacity_animations_map_.erase(id);
741 layer_ids_to_remove.clear(); 739 layer_ids_to_remove.clear();
742 740
743 for (auto& layer_id_to_transform : transform_animations_map_) { 741 for (auto& layer_id_to_transform : transform_animations_map_) {
744 const int id = layer_id_to_transform.first; 742 const int id = layer_id_to_transform.first;
745 if (property_trees_.IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 743 if (TransformNode* node =
746 id)) { 744 property_trees_.transform_tree.FindNodeFromId(id)) {
747 TransformNode* node = property_trees_.transform_tree.Node(
748 property_trees_.layer_id_to_transform_node_index[id]);
749 if (!node->is_currently_animating || 745 if (!node->is_currently_animating ||
750 node->local == layer_id_to_transform.second) { 746 node->local == layer_id_to_transform.second) {
751 layer_ids_to_remove.push_back(id); 747 layer_ids_to_remove.push_back(id);
752 continue; 748 continue;
753 } 749 }
754 node->local = layer_id_to_transform.second; 750 node->local = layer_id_to_transform.second;
755 node->needs_local_transform_update = true; 751 node->needs_local_transform_update = true;
756 property_trees_.transform_tree.set_needs_update(true); 752 property_trees_.transform_tree.set_needs_update(true);
757 } 753 }
758 } 754 }
759 for (auto id : layer_ids_to_remove) 755 for (auto id : layer_ids_to_remove)
760 transform_animations_map_.erase(id); 756 transform_animations_map_.erase(id);
761 layer_ids_to_remove.clear(); 757 layer_ids_to_remove.clear();
762 758
763 for (auto& layer_id_to_filters : filter_animations_map_) { 759 for (auto& layer_id_to_filters : filter_animations_map_) {
764 const int id = layer_id_to_filters.first; 760 const int id = layer_id_to_filters.first;
765 if (property_trees_.IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id)) { 761 if (EffectNode* node = property_trees_.effect_tree.FindNodeFromId(id)) {
766 EffectNode* node = property_trees_.effect_tree.Node(
767 property_trees_.layer_id_to_effect_node_index[id]);
768 if (!node->is_currently_animating_filter || 762 if (!node->is_currently_animating_filter ||
769 node->filters == layer_id_to_filters.second) { 763 node->filters == layer_id_to_filters.second) {
770 layer_ids_to_remove.push_back(id); 764 layer_ids_to_remove.push_back(id);
771 continue; 765 continue;
772 } 766 }
773 node->filters = layer_id_to_filters.second; 767 node->filters = layer_id_to_filters.second;
774 property_trees_.effect_tree.set_needs_update(true); 768 property_trees_.effect_tree.set_needs_update(true);
775 } 769 }
776 } 770 }
777 for (auto id : layer_ids_to_remove) 771 for (auto id : layer_ids_to_remove)
(...skipping 1371 matching lines...) Expand 10 before | Expand all | Expand 10 after
2149 2143
2150 void LayerTreeImpl::ResetAllChangeTracking() { 2144 void LayerTreeImpl::ResetAllChangeTracking() {
2151 layers_that_should_push_properties_.clear(); 2145 layers_that_should_push_properties_.clear();
2152 // Iterate over all layers, including masks. 2146 // Iterate over all layers, including masks.
2153 for (auto& layer : *layers_) 2147 for (auto& layer : *layers_)
2154 layer->ResetChangeTracking(); 2148 layer->ResetChangeTracking();
2155 property_trees_.ResetAllChangeTracking(); 2149 property_trees_.ResetAllChangeTracking();
2156 } 2150 }
2157 2151
2158 } // namespace cc 2152 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698