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

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

Issue 2753933005: cc: Move Layer Id to Node Map to Individual Property Tree Private (Closed)
Patch Set: renaming clean up 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
« no previous file with comments | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 return node.id; 64 return node.id;
65 } 65 }
66 66
67 template <typename T> 67 template <typename T>
68 void PropertyTree<T>::clear() { 68 void PropertyTree<T>::clear() {
69 needs_update_ = false; 69 needs_update_ = false;
70 nodes_.clear(); 70 nodes_.clear();
71 nodes_.push_back(T()); 71 nodes_.push_back(T());
72 back()->id = kRootNodeId; 72 back()->id = kRootNodeId;
73 back()->parent_id = kInvalidNodeId; 73 back()->parent_id = kInvalidNodeId;
74 owning_layer_id_to_node_index.clear();
74 75
75 #if DCHECK_IS_ON() 76 #if DCHECK_IS_ON()
76 PropertyTree<T> tree; 77 PropertyTree<T> tree;
77 DCHECK(tree == *this); 78 DCHECK(tree == *this);
78 #endif 79 #endif
79 } 80 }
80 81
81 template <typename T> 82 template <typename T>
82 bool PropertyTree<T>::operator==(const PropertyTree<T>& other) const { 83 bool PropertyTree<T>::operator==(const PropertyTree<T>& other) const {
83 return nodes_ == other.nodes() && needs_update_ == other.needs_update(); 84 return nodes_ == other.nodes() && needs_update_ == other.needs_update() &&
85 owning_layer_id_to_node_index == other.owning_layer_id_to_node_index;
84 } 86 }
85 87
86 template <typename T> 88 template <typename T>
87 void PropertyTree<T>::AsValueInto(base::trace_event::TracedValue* value) const { 89 void PropertyTree<T>::AsValueInto(base::trace_event::TracedValue* value) const {
88 value->BeginArray("nodes"); 90 value->BeginArray("nodes");
89 for (const auto& node : nodes_) { 91 for (const auto& node : nodes_) {
90 value->BeginDictionary(); 92 value->BeginDictionary();
91 node.AsValueInto(value); 93 node.AsValueInto(value);
92 value->EndDictionary(); 94 value->EndDictionary();
93 } 95 }
(...skipping 1496 matching lines...) Expand 10 before | Expand all | Expand 10 after
1590 clip_tree.SetPropertyTrees(this); 1592 clip_tree.SetPropertyTrees(this);
1591 scroll_tree.SetPropertyTrees(this); 1593 scroll_tree.SetPropertyTrees(this);
1592 } 1594 }
1593 1595
1594 PropertyTrees::~PropertyTrees() {} 1596 PropertyTrees::~PropertyTrees() {}
1595 1597
1596 bool PropertyTrees::operator==(const PropertyTrees& other) const { 1598 bool PropertyTrees::operator==(const PropertyTrees& other) const {
1597 return transform_tree == other.transform_tree && 1599 return transform_tree == other.transform_tree &&
1598 effect_tree == other.effect_tree && clip_tree == other.clip_tree && 1600 effect_tree == other.effect_tree && clip_tree == other.clip_tree &&
1599 scroll_tree == other.scroll_tree && 1601 scroll_tree == other.scroll_tree &&
1600 layer_id_to_transform_node_index ==
1601 other.layer_id_to_transform_node_index &&
1602 layer_id_to_effect_node_index == other.layer_id_to_effect_node_index &&
1603 layer_id_to_clip_node_index == other.layer_id_to_clip_node_index &&
1604 layer_id_to_scroll_node_index == other.layer_id_to_scroll_node_index &&
1605 element_id_to_effect_node_index == 1602 element_id_to_effect_node_index ==
1606 other.element_id_to_effect_node_index && 1603 other.element_id_to_effect_node_index &&
1607 element_id_to_scroll_node_index == 1604 element_id_to_scroll_node_index ==
1608 other.element_id_to_scroll_node_index && 1605 other.element_id_to_scroll_node_index &&
1609 element_id_to_transform_node_index == 1606 element_id_to_transform_node_index ==
1610 other.element_id_to_transform_node_index && 1607 other.element_id_to_transform_node_index &&
1611 always_use_active_tree_opacity_effect_ids == 1608 always_use_active_tree_opacity_effect_ids ==
1612 other.always_use_active_tree_opacity_effect_ids && 1609 other.always_use_active_tree_opacity_effect_ids &&
1613 needs_rebuild == other.needs_rebuild && changed == other.changed && 1610 needs_rebuild == other.needs_rebuild && changed == other.changed &&
1614 full_tree_damaged == other.full_tree_damaged && 1611 full_tree_damaged == other.full_tree_damaged &&
1615 is_main_thread == other.is_main_thread && 1612 is_main_thread == other.is_main_thread &&
1616 is_active == other.is_active && 1613 is_active == other.is_active &&
1617 non_root_surfaces_enabled == other.non_root_surfaces_enabled && 1614 non_root_surfaces_enabled == other.non_root_surfaces_enabled &&
1618 sequence_number == other.sequence_number; 1615 sequence_number == other.sequence_number;
1619 } 1616 }
1620 1617
1621 PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) { 1618 PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) {
1622 transform_tree = from.transform_tree; 1619 transform_tree = from.transform_tree;
1623 effect_tree = from.effect_tree; 1620 effect_tree = from.effect_tree;
1624 clip_tree = from.clip_tree; 1621 clip_tree = from.clip_tree;
1625 scroll_tree = from.scroll_tree; 1622 scroll_tree = from.scroll_tree;
1626 layer_id_to_transform_node_index = from.layer_id_to_transform_node_index;
1627 layer_id_to_effect_node_index = from.layer_id_to_effect_node_index;
1628 always_use_active_tree_opacity_effect_ids = 1623 always_use_active_tree_opacity_effect_ids =
1629 from.always_use_active_tree_opacity_effect_ids; 1624 from.always_use_active_tree_opacity_effect_ids;
1630 layer_id_to_clip_node_index = from.layer_id_to_clip_node_index;
1631 layer_id_to_scroll_node_index = from.layer_id_to_scroll_node_index;
1632 element_id_to_effect_node_index = from.element_id_to_effect_node_index; 1625 element_id_to_effect_node_index = from.element_id_to_effect_node_index;
1633 element_id_to_scroll_node_index = from.element_id_to_scroll_node_index; 1626 element_id_to_scroll_node_index = from.element_id_to_scroll_node_index;
1634 element_id_to_transform_node_index = from.element_id_to_transform_node_index; 1627 element_id_to_transform_node_index = from.element_id_to_transform_node_index;
1635 needs_rebuild = from.needs_rebuild; 1628 needs_rebuild = from.needs_rebuild;
1636 changed = from.changed; 1629 changed = from.changed;
1637 full_tree_damaged = from.full_tree_damaged; 1630 full_tree_damaged = from.full_tree_damaged;
1638 non_root_surfaces_enabled = from.non_root_surfaces_enabled; 1631 non_root_surfaces_enabled = from.non_root_surfaces_enabled;
1639 sequence_number = from.sequence_number; 1632 sequence_number = from.sequence_number;
1640 is_main_thread = from.is_main_thread; 1633 is_main_thread = from.is_main_thread;
1641 is_active = from.is_active; 1634 is_active = from.is_active;
1642 inner_viewport_container_bounds_delta_ = 1635 inner_viewport_container_bounds_delta_ =
1643 from.inner_viewport_container_bounds_delta(); 1636 from.inner_viewport_container_bounds_delta();
1644 outer_viewport_container_bounds_delta_ = 1637 outer_viewport_container_bounds_delta_ =
1645 from.outer_viewport_container_bounds_delta(); 1638 from.outer_viewport_container_bounds_delta();
1646 inner_viewport_scroll_bounds_delta_ = 1639 inner_viewport_scroll_bounds_delta_ =
1647 from.inner_viewport_scroll_bounds_delta(); 1640 from.inner_viewport_scroll_bounds_delta();
1648 transform_tree.SetPropertyTrees(this); 1641 transform_tree.SetPropertyTrees(this);
1649 effect_tree.SetPropertyTrees(this); 1642 effect_tree.SetPropertyTrees(this);
1650 clip_tree.SetPropertyTrees(this); 1643 clip_tree.SetPropertyTrees(this);
1651 scroll_tree.SetPropertyTrees(this); 1644 scroll_tree.SetPropertyTrees(this);
1652 ResetCachedData(); 1645 ResetCachedData();
1653 return *this; 1646 return *this;
1654 } 1647 }
1655 1648
1656 void PropertyTrees::clear() { 1649 void PropertyTrees::clear() {
1657 transform_tree.clear(); 1650 transform_tree.clear();
1658 clip_tree.clear(); 1651 clip_tree.clear();
1659 effect_tree.clear(); 1652 effect_tree.clear();
1660 scroll_tree.clear(); 1653 scroll_tree.clear();
1661 layer_id_to_transform_node_index.clear();
1662 layer_id_to_effect_node_index.clear();
1663 layer_id_to_clip_node_index.clear();
1664 layer_id_to_scroll_node_index.clear();
1665 element_id_to_effect_node_index.clear(); 1654 element_id_to_effect_node_index.clear();
1666 element_id_to_scroll_node_index.clear(); 1655 element_id_to_scroll_node_index.clear();
1667 element_id_to_transform_node_index.clear(); 1656 element_id_to_transform_node_index.clear();
1668 always_use_active_tree_opacity_effect_ids.clear(); 1657 always_use_active_tree_opacity_effect_ids.clear();
1669 1658
1670 needs_rebuild = true; 1659 needs_rebuild = true;
1671 full_tree_damaged = false; 1660 full_tree_damaged = false;
1672 changed = false; 1661 changed = false;
1673 non_root_surfaces_enabled = true; 1662 non_root_surfaces_enabled = true;
1674 sequence_number++; 1663 sequence_number++;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1706 transform_tree.UpdateOuterViewportContainerBoundsDelta(); 1695 transform_tree.UpdateOuterViewportContainerBoundsDelta();
1707 } 1696 }
1708 1697
1709 void PropertyTrees::SetInnerViewportScrollBoundsDelta( 1698 void PropertyTrees::SetInnerViewportScrollBoundsDelta(
1710 gfx::Vector2dF bounds_delta) { 1699 gfx::Vector2dF bounds_delta) {
1711 inner_viewport_scroll_bounds_delta_ = bounds_delta; 1700 inner_viewport_scroll_bounds_delta_ = bounds_delta;
1712 } 1701 }
1713 1702
1714 void PropertyTrees::PushOpacityIfNeeded(PropertyTrees* target_tree) { 1703 void PropertyTrees::PushOpacityIfNeeded(PropertyTrees* target_tree) {
1715 for (int id : target_tree->always_use_active_tree_opacity_effect_ids) { 1704 for (int id : target_tree->always_use_active_tree_opacity_effect_ids) {
1716 if (layer_id_to_effect_node_index.find(id) == 1705 if (EffectNode* source_effect_node =
1717 layer_id_to_effect_node_index.end()) 1706 effect_tree.FindNodeFromOwningLayerId(id)) {
1718 continue; 1707 EffectNode* target_effect_node =
1719 EffectNode* source_effect_node = 1708 target_tree->effect_tree.FindNodeFromOwningLayerId(id);
1720 effect_tree.Node(layer_id_to_effect_node_index[id]); 1709 float source_opacity = source_effect_node->opacity;
1721 EffectNode* target_effect_node = target_tree->effect_tree.Node( 1710 float target_opacity = target_effect_node->opacity;
1722 target_tree->layer_id_to_effect_node_index[id]); 1711 if (source_opacity == target_opacity)
1723 float source_opacity = source_effect_node->opacity; 1712 continue;
1724 float target_opacity = target_effect_node->opacity; 1713 target_effect_node->opacity = source_opacity;
1725 if (source_opacity == target_opacity) 1714 target_tree->effect_tree.set_needs_update(true);
1726 continue; 1715 }
1727 target_effect_node->opacity = source_opacity;
1728 target_tree->effect_tree.set_needs_update(true);
1729 } 1716 }
1730 } 1717 }
1731 1718
1732 void PropertyTrees::RemoveIdFromIdToIndexMaps(int id) { 1719 void PropertyTrees::RemoveIdFromIdToIndexMaps(int id) {
1733 layer_id_to_transform_node_index.erase(id); 1720 transform_tree.SetOwningLayerIdForNode(nullptr, id);
1734 layer_id_to_effect_node_index.erase(id); 1721 clip_tree.SetOwningLayerIdForNode(nullptr, id);
1735 layer_id_to_clip_node_index.erase(id); 1722 scroll_tree.SetOwningLayerIdForNode(nullptr, id);
1736 layer_id_to_scroll_node_index.erase(id); 1723 effect_tree.SetOwningLayerIdForNode(nullptr, id);
1737 }
1738
1739 bool PropertyTrees::IsInIdToIndexMap(TreeType tree_type, int id) {
1740 std::unordered_map<int, int>* id_to_index_map = nullptr;
1741 switch (tree_type) {
1742 case TRANSFORM:
1743 id_to_index_map = &layer_id_to_transform_node_index;
1744 break;
1745 case EFFECT:
1746 id_to_index_map = &layer_id_to_effect_node_index;
1747 break;
1748 case CLIP:
1749 id_to_index_map = &layer_id_to_clip_node_index;
1750 break;
1751 case SCROLL:
1752 id_to_index_map = &layer_id_to_scroll_node_index;
1753 break;
1754 }
1755 return id_to_index_map->find(id) != id_to_index_map->end();
1756 } 1724 }
1757 1725
1758 void PropertyTrees::UpdateChangeTracking() { 1726 void PropertyTrees::UpdateChangeTracking() {
1759 for (int id = EffectTree::kContentsRootNodeId; 1727 for (int id = EffectTree::kContentsRootNodeId;
1760 id < static_cast<int>(effect_tree.size()); ++id) { 1728 id < static_cast<int>(effect_tree.size()); ++id) {
1761 EffectNode* node = effect_tree.Node(id); 1729 EffectNode* node = effect_tree.Node(id);
1762 EffectNode* parent_node = effect_tree.parent(node); 1730 EffectNode* parent_node = effect_tree.parent(node);
1763 effect_tree.UpdateEffectChanged(node, parent_node); 1731 effect_tree.UpdateEffectChanged(node, parent_node);
1764 } 1732 }
1765 for (int i = TransformTree::kContentsRootNodeId; 1733 for (int i = TransformTree::kContentsRootNodeId;
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
2114 const EffectNode* effect_node = effect_tree.Node(effect_id); 2082 const EffectNode* effect_node = effect_tree.Node(effect_id);
2115 2083
2116 if (effect_node->surface_contents_scale.x() != 0.0 && 2084 if (effect_node->surface_contents_scale.x() != 0.0 &&
2117 effect_node->surface_contents_scale.y() != 0.0) 2085 effect_node->surface_contents_scale.y() != 0.0)
2118 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(), 2086 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(),
2119 1.0 / effect_node->surface_contents_scale.y()); 2087 1.0 / effect_node->surface_contents_scale.y());
2120 return screen_space_transform; 2088 return screen_space_transform;
2121 } 2089 }
2122 2090
2123 } // namespace cc 2091 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698