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

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

Issue 572483002: Fix RemoveFromScrollTree and RemoveFromClipTree (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 <algorithm> 7 #include <algorithm>
8 8
9 #include "base/atomic_sequence_num.h" 9 #include "base/atomic_sequence_num.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 // Our parent should be holding a reference to us so there should be no 84 // Our parent should be holding a reference to us so there should be no
85 // way for us to be destroyed while we still have a parent. 85 // way for us to be destroyed while we still have a parent.
86 DCHECK(!parent()); 86 DCHECK(!parent());
87 // Similarly we shouldn't have a layer tree host since it also keeps a 87 // Similarly we shouldn't have a layer tree host since it also keeps a
88 // reference to us. 88 // reference to us.
89 DCHECK(!layer_tree_host()); 89 DCHECK(!layer_tree_host());
90 90
91 layer_animation_controller_->RemoveValueObserver(this); 91 layer_animation_controller_->RemoveValueObserver(this);
92 layer_animation_controller_->remove_value_provider(this); 92 layer_animation_controller_->remove_value_provider(this);
93 93
94 RemoveFromScrollTree();
95 RemoveFromClipTree();
96
94 // Remove the parent reference from all children and dependents. 97 // Remove the parent reference from all children and dependents.
95 RemoveAllChildren(); 98 RemoveAllChildren();
96 if (mask_layer_.get()) { 99 if (mask_layer_.get()) {
97 DCHECK_EQ(this, mask_layer_->parent()); 100 DCHECK_EQ(this, mask_layer_->parent());
98 mask_layer_->RemoveFromParent(); 101 mask_layer_->RemoveFromParent();
99 } 102 }
100 if (replica_layer_.get()) { 103 if (replica_layer_.get()) {
101 DCHECK_EQ(this, replica_layer_->parent()); 104 DCHECK_EQ(this, replica_layer_->parent());
102 replica_layer_->RemoveFromParent(); 105 replica_layer_->RemoveFromParent();
103 } 106 }
104
105 RemoveFromScrollTree();
106 RemoveFromClipTree();
107 } 107 }
108 108
109 void Layer::SetLayerTreeHost(LayerTreeHost* host) { 109 void Layer::SetLayerTreeHost(LayerTreeHost* host) {
110 if (layer_tree_host_ == host) 110 if (layer_tree_host_ == host)
111 return; 111 return;
112 112
113 layer_tree_host_ = host; 113 layer_tree_host_ = host;
114 114
115 // When changing hosts, the layer needs to commit its properties to the impl 115 // When changing hosts, the layer needs to commit its properties to the impl
116 // side for the new host. 116 // side for the new host.
(...skipping 1076 matching lines...) Expand 10 before | Expand all | Expand 10 after
1193 RenderingStatsInstrumentation* Layer::rendering_stats_instrumentation() const { 1193 RenderingStatsInstrumentation* Layer::rendering_stats_instrumentation() const {
1194 return layer_tree_host_->rendering_stats_instrumentation(); 1194 return layer_tree_host_->rendering_stats_instrumentation();
1195 } 1195 }
1196 1196
1197 bool Layer::SupportsLCDText() const { 1197 bool Layer::SupportsLCDText() const {
1198 return false; 1198 return false;
1199 } 1199 }
1200 1200
1201 void Layer::RemoveFromScrollTree() { 1201 void Layer::RemoveFromScrollTree() {
1202 if (scroll_children_.get()) { 1202 if (scroll_children_.get()) {
1203 for (std::set<Layer*>::iterator it = scroll_children_->begin(); 1203 std::set<Layer*> copy = *scroll_children_;
1204 it != scroll_children_->end(); ++it) 1204 for (std::set<Layer*>::iterator it = copy.begin(); it != copy.end(); ++it)
1205 (*it)->scroll_parent_ = NULL; 1205 (*it)->SetScrollParent(NULL);
1206 } 1206 }
1207 1207
1208 if (scroll_parent_) 1208 DCHECK(!scroll_children_);
1209 scroll_parent_->RemoveScrollChild(this); 1209 SetScrollParent(NULL);
1210
1211 scroll_parent_ = NULL;
1212 } 1210 }
1213 1211
1214 void Layer::RemoveFromClipTree() { 1212 void Layer::RemoveFromClipTree() {
1215 if (clip_children_.get()) { 1213 if (clip_children_.get()) {
1216 for (std::set<Layer*>::iterator it = clip_children_->begin(); 1214 std::set<Layer*> copy = *clip_children_;
1217 it != clip_children_->end(); ++it) 1215 for (std::set<Layer*>::iterator it = copy.begin(); it != copy.end(); ++it)
1218 (*it)->clip_parent_ = NULL; 1216 (*it)->SetClipParent(NULL);
1219 } 1217 }
1220 1218
1221 if (clip_parent_) 1219 DCHECK(!clip_children_);
1222 clip_parent_->RemoveClipChild(this); 1220 SetClipParent(NULL);
1223
1224 clip_parent_ = NULL;
1225 } 1221 }
1226 1222
1227 void Layer::AddDrawableDescendants(int num) { 1223 void Layer::AddDrawableDescendants(int num) {
1228 DCHECK_GE(num_descendants_that_draw_content_, 0); 1224 DCHECK_GE(num_descendants_that_draw_content_, 0);
1229 DCHECK_GE(num_descendants_that_draw_content_ + num, 0); 1225 DCHECK_GE(num_descendants_that_draw_content_ + num, 0);
1230 if (num == 0) 1226 if (num == 0)
1231 return; 1227 return;
1232 num_descendants_that_draw_content_ += num; 1228 num_descendants_that_draw_content_ += num;
1233 SetNeedsCommit(); 1229 SetNeedsCommit();
1234 if (parent()) 1230 if (parent())
1235 parent()->AddDrawableDescendants(num); 1231 parent()->AddDrawableDescendants(num);
1236 } 1232 }
1237 1233
1238 void Layer::RunMicroBenchmark(MicroBenchmark* benchmark) { 1234 void Layer::RunMicroBenchmark(MicroBenchmark* benchmark) {
1239 benchmark->RunOnLayer(this); 1235 benchmark->RunOnLayer(this);
1240 } 1236 }
1241 1237
1242 bool Layer::HasDelegatedContent() const { 1238 bool Layer::HasDelegatedContent() const {
1243 return false; 1239 return false;
1244 } 1240 }
1245 1241
1246 } // namespace cc 1242 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/layer.h ('k') | cc/layers/layer_unittest.cc » ('j') | cc/layers/layer_unittest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698