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

Side by Side Diff: cc/layers/layer.cc

Issue 2216203002: Refactor MutatorHostClient from LayerTreeHost to LayerTree. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixes according to code review. Created 4 years, 4 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 2010 The Chromium Authors. All rights reserved. 1 // Copyright 2010 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/layers/layer.h" 5 #include "cc/layers/layer.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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 126
127 void Layer::SetLayerTreeHost(LayerTreeHost* host) { 127 void Layer::SetLayerTreeHost(LayerTreeHost* host) {
128 if (layer_tree_host_ == host) 128 if (layer_tree_host_ == host)
129 return; 129 return;
130 130
131 if (layer_tree_host_) { 131 if (layer_tree_host_) {
132 layer_tree_host_->property_trees()->RemoveIdFromIdToIndexMaps(id()); 132 layer_tree_host_->property_trees()->RemoveIdFromIdToIndexMaps(id());
133 layer_tree_host_->property_trees()->needs_rebuild = true; 133 layer_tree_host_->property_trees()->needs_rebuild = true;
134 layer_tree_->UnregisterLayer(this); 134 layer_tree_->UnregisterLayer(this);
135 if (inputs_.element_id) { 135 if (inputs_.element_id) {
136 layer_tree_host_->animation_host()->UnregisterElement( 136 layer_tree_->UnregisterElement(inputs_.element_id,
137 inputs_.element_id, ElementListType::ACTIVE); 137 ElementListType::ACTIVE, this);
138 layer_tree_host_->RemoveFromElementMap(this);
139 } 138 }
140 } 139 }
141 if (host) { 140 if (host) {
142 host->property_trees()->needs_rebuild = true; 141 host->property_trees()->needs_rebuild = true;
143 host->GetLayerTree()->RegisterLayer(this); 142 host->GetLayerTree()->RegisterLayer(this);
144 if (inputs_.element_id) { 143 if (inputs_.element_id) {
145 host->AddToElementMap(this); 144 host->GetLayerTree()->RegisterElement(inputs_.element_id,
146 host->animation_host()->RegisterElement(inputs_.element_id, 145 ElementListType::ACTIVE, this);
147 ElementListType::ACTIVE);
148 } 146 }
149 } 147 }
150 148
151 layer_tree_host_ = host; 149 layer_tree_host_ = host;
152 layer_tree_ = host ? host->GetLayerTree() : nullptr; 150 layer_tree_ = host ? host->GetLayerTree() : nullptr;
153 InvalidatePropertyTreesIndices(); 151 InvalidatePropertyTreesIndices();
154 152
155 // When changing hosts, the layer needs to commit its properties to the impl 153 // When changing hosts, the layer needs to commit its properties to the impl
156 // side for the new host. 154 // side for the new host.
157 SetNeedsPushProperties(); 155 SetNeedsPushProperties();
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after
845 843
846 void Layer::SetScrollClipLayerId(int clip_layer_id) { 844 void Layer::SetScrollClipLayerId(int clip_layer_id) {
847 DCHECK(IsPropertyChangeAllowed()); 845 DCHECK(IsPropertyChangeAllowed());
848 if (inputs_.scroll_clip_layer_id == clip_layer_id) 846 if (inputs_.scroll_clip_layer_id == clip_layer_id)
849 return; 847 return;
850 inputs_.scroll_clip_layer_id = clip_layer_id; 848 inputs_.scroll_clip_layer_id = clip_layer_id;
851 SetNeedsCommit(); 849 SetNeedsCommit();
852 } 850 }
853 851
854 Layer* Layer::scroll_clip_layer() const { 852 Layer* Layer::scroll_clip_layer() const {
855 return layer_tree_host()->LayerById(inputs_.scroll_clip_layer_id); 853 DCHECK(layer_tree_);
854 return layer_tree_->LayerById(inputs_.scroll_clip_layer_id);
856 } 855 }
857 856
858 void Layer::SetUserScrollable(bool horizontal, bool vertical) { 857 void Layer::SetUserScrollable(bool horizontal, bool vertical) {
859 DCHECK(IsPropertyChangeAllowed()); 858 DCHECK(IsPropertyChangeAllowed());
860 if (inputs_.user_scrollable_horizontal == horizontal && 859 if (inputs_.user_scrollable_horizontal == horizontal &&
861 inputs_.user_scrollable_vertical == vertical) 860 inputs_.user_scrollable_vertical == vertical)
862 return; 861 return;
863 inputs_.user_scrollable_horizontal = horizontal; 862 inputs_.user_scrollable_horizontal = horizontal;
864 inputs_.user_scrollable_vertical = vertical; 863 inputs_.user_scrollable_vertical = vertical;
865 SetNeedsCommit(); 864 SetNeedsCommit();
(...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after
1474 inputs_.use_parent_backface_visibility = 1473 inputs_.use_parent_backface_visibility =
1475 base.use_parent_backface_visibility(); 1474 base.use_parent_backface_visibility();
1476 inputs_.transform = ProtoToTransform(base.transform()); 1475 inputs_.transform = ProtoToTransform(base.transform());
1477 inputs_.sorting_context_id = base.sorting_context_id(); 1476 inputs_.sorting_context_id = base.sorting_context_id();
1478 num_descendants_that_draw_content_ = base.num_descendants_that_draw_content(); 1477 num_descendants_that_draw_content_ = base.num_descendants_that_draw_content();
1479 1478
1480 inputs_.scroll_clip_layer_id = base.scroll_clip_layer_id(); 1479 inputs_.scroll_clip_layer_id = base.scroll_clip_layer_id();
1481 inputs_.user_scrollable_horizontal = base.user_scrollable_horizontal(); 1480 inputs_.user_scrollable_horizontal = base.user_scrollable_horizontal();
1482 inputs_.user_scrollable_vertical = base.user_scrollable_vertical(); 1481 inputs_.user_scrollable_vertical = base.user_scrollable_vertical();
1483 1482
1484 inputs_.scroll_parent = 1483 inputs_.scroll_parent = base.scroll_parent_id() == INVALID_ID
1485 base.scroll_parent_id() == INVALID_ID 1484 ? nullptr
1486 ? nullptr 1485 : layer_tree_->LayerById(base.scroll_parent_id());
1487 : layer_tree_host_->LayerById(base.scroll_parent_id());
1488 1486
1489 // If there have been scroll children entries in previous deserializations, 1487 // If there have been scroll children entries in previous deserializations,
1490 // clear out the set. If there have been none, initialize the set of children. 1488 // clear out the set. If there have been none, initialize the set of children.
1491 // After this, the set is in the correct state to only add the new children. 1489 // After this, the set is in the correct state to only add the new children.
1492 // If the set of children has not changed, for now this code still rebuilds 1490 // If the set of children has not changed, for now this code still rebuilds
1493 // the set. 1491 // the set.
1494 if (scroll_children_) 1492 if (scroll_children_)
1495 scroll_children_->clear(); 1493 scroll_children_->clear();
1496 else if (base.scroll_children_ids_size() > 0) 1494 else if (base.scroll_children_ids_size() > 0)
1497 scroll_children_.reset(new std::set<Layer*>); 1495 scroll_children_.reset(new std::set<Layer*>);
1498 for (int i = 0; i < base.scroll_children_ids_size(); ++i) { 1496 for (int i = 0; i < base.scroll_children_ids_size(); ++i) {
1499 int child_id = base.scroll_children_ids(i); 1497 int child_id = base.scroll_children_ids(i);
1500 scoped_refptr<Layer> child = layer_tree_host_->LayerById(child_id); 1498 scoped_refptr<Layer> child = layer_tree_->LayerById(child_id);
1501 scroll_children_->insert(child.get()); 1499 scroll_children_->insert(child.get());
1502 } 1500 }
1503 1501
1504 inputs_.clip_parent = 1502 inputs_.clip_parent = base.clip_parent_id() == INVALID_ID
1505 base.clip_parent_id() == INVALID_ID 1503 ? nullptr
1506 ? nullptr 1504 : layer_tree_->LayerById(base.clip_parent_id());
1507 : layer_tree_host_->LayerById(base.clip_parent_id());
1508 1505
1509 // If there have been clip children entries in previous deserializations, 1506 // If there have been clip children entries in previous deserializations,
1510 // clear out the set. If there have been none, initialize the set of children. 1507 // clear out the set. If there have been none, initialize the set of children.
1511 // After this, the set is in the correct state to only add the new children. 1508 // After this, the set is in the correct state to only add the new children.
1512 // If the set of children has not changed, for now this code still rebuilds 1509 // If the set of children has not changed, for now this code still rebuilds
1513 // the set. 1510 // the set.
1514 if (clip_children_) 1511 if (clip_children_)
1515 clip_children_->clear(); 1512 clip_children_->clear();
1516 else if (base.clip_children_ids_size() > 0) 1513 else if (base.clip_children_ids_size() > 0)
1517 clip_children_.reset(new std::set<Layer*>); 1514 clip_children_.reset(new std::set<Layer*>);
1518 for (int i = 0; i < base.clip_children_ids_size(); ++i) { 1515 for (int i = 0; i < base.clip_children_ids_size(); ++i) {
1519 int child_id = base.clip_children_ids(i); 1516 int child_id = base.clip_children_ids(i);
1520 scoped_refptr<Layer> child = layer_tree_host_->LayerById(child_id); 1517 scoped_refptr<Layer> child = layer_tree_->LayerById(child_id);
1521 clip_children_->insert(child.get()); 1518 clip_children_->insert(child.get());
1522 } 1519 }
1523 1520
1524 inputs_.scroll_offset = ProtoToScrollOffset(base.scroll_offset()); 1521 inputs_.scroll_offset = ProtoToScrollOffset(base.scroll_offset());
1525 1522
1526 inputs_.update_rect.Union(ProtoToRect(base.update_rect())); 1523 inputs_.update_rect.Union(ProtoToRect(base.update_rect()));
1527 1524
1528 inputs_.has_will_change_transform_hint = 1525 inputs_.has_will_change_transform_hint =
1529 base.has_will_change_transform_hint(); 1526 base.has_will_change_transform_hint();
1530 } 1527 }
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
1830 benchmark->RunOnLayer(this); 1827 benchmark->RunOnLayer(this);
1831 } 1828 }
1832 1829
1833 void Layer::SetElementId(ElementId id) { 1830 void Layer::SetElementId(ElementId id) {
1834 DCHECK(IsPropertyChangeAllowed()); 1831 DCHECK(IsPropertyChangeAllowed());
1835 if (inputs_.element_id == id) 1832 if (inputs_.element_id == id)
1836 return; 1833 return;
1837 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), 1834 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("compositor-worker"),
1838 "Layer::SetElementId", "element", id.AsValue().release()); 1835 "Layer::SetElementId", "element", id.AsValue().release());
1839 if (inputs_.element_id && layer_tree_host()) { 1836 if (inputs_.element_id && layer_tree_host()) {
1840 layer_tree_host()->animation_host()->UnregisterElement( 1837 layer_tree_->UnregisterElement(inputs_.element_id, ElementListType::ACTIVE,
1841 inputs_.element_id, ElementListType::ACTIVE); 1838 this);
1842 layer_tree_host()->RemoveFromElementMap(this);
1843 } 1839 }
1844 1840
1845 inputs_.element_id = id; 1841 inputs_.element_id = id;
1846 1842
1847 if (inputs_.element_id && layer_tree_host()) { 1843 if (inputs_.element_id && layer_tree_host()) {
1848 layer_tree_host()->animation_host()->RegisterElement( 1844 layer_tree_->RegisterElement(inputs_.element_id, ElementListType::ACTIVE,
1849 inputs_.element_id, ElementListType::ACTIVE); 1845 this);
1850 layer_tree_host()->AddToElementMap(this);
1851 } 1846 }
1852 1847
1853 SetNeedsCommit(); 1848 SetNeedsCommit();
1854 } 1849 }
1855 1850
1856 void Layer::SetMutableProperties(uint32_t properties) { 1851 void Layer::SetMutableProperties(uint32_t properties) {
1857 DCHECK(IsPropertyChangeAllowed()); 1852 DCHECK(IsPropertyChangeAllowed());
1858 if (inputs_.mutable_properties == properties) 1853 if (inputs_.mutable_properties == properties)
1859 return; 1854 return;
1860 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), 1855 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("compositor-worker"),
(...skipping 21 matching lines...) Expand all
1882 DCHECK_NE(transform_tree_index_, TransformTree::kInvalidNodeId); 1877 DCHECK_NE(transform_tree_index_, TransformTree::kInvalidNodeId);
1883 return draw_property_utils::ScreenSpaceTransform( 1878 return draw_property_utils::ScreenSpaceTransform(
1884 this, layer_tree_host_->property_trees()->transform_tree); 1879 this, layer_tree_host_->property_trees()->transform_tree);
1885 } 1880 }
1886 1881
1887 LayerTree* Layer::GetLayerTree() const { 1882 LayerTree* Layer::GetLayerTree() const {
1888 return layer_tree_; 1883 return layer_tree_;
1889 } 1884 }
1890 1885
1891 } // namespace cc 1886 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698