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

Side by Side Diff: cc/layer_tree_impl.cc

Issue 12259027: cc: Simplify the logic for deciding to update tile priorities. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 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 | Annotate | Revision Log
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/layer_tree_impl.h" 5 #include "cc/layer_tree_impl.h"
6 6
7 #include "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "cc/heads_up_display_layer_impl.h" 8 #include "cc/heads_up_display_layer_impl.h"
9 #include "cc/layer_tree_host_common.h" 9 #include "cc/layer_tree_host_common.h"
10 #include "cc/layer_tree_host_impl.h" 10 #include "cc/layer_tree_host_impl.h"
(...skipping 10 matching lines...) Expand all
21 background_color_(0), 21 background_color_(0),
22 has_transparent_background_(false), 22 has_transparent_background_(false),
23 page_scale_factor_(1), 23 page_scale_factor_(1),
24 page_scale_delta_(1), 24 page_scale_delta_(1),
25 sent_page_scale_delta_(1), 25 sent_page_scale_delta_(1),
26 min_page_scale_factor_(0), 26 min_page_scale_factor_(0),
27 max_page_scale_factor_(0), 27 max_page_scale_factor_(0),
28 scrolling_layer_id_from_previous_tree_(0), 28 scrolling_layer_id_from_previous_tree_(0),
29 contents_textures_purged_(false), 29 contents_textures_purged_(false),
30 needs_update_draw_properties_(true), 30 needs_update_draw_properties_(true),
31 needs_update_tile_priorities_(false),
31 needs_full_tree_sync_(true) { 32 needs_full_tree_sync_(true) {
32 } 33 }
33 34
34 LayerTreeImpl::~LayerTreeImpl() { 35 LayerTreeImpl::~LayerTreeImpl() {
35 // Need to explicitly clear the tree prior to destroying this so that 36 // Need to explicitly clear the tree prior to destroying this so that
36 // the LayerTreeImpl pointer is still valid in the LayerImpl dtor. 37 // the LayerTreeImpl pointer is still valid in the LayerImpl dtor.
37 root_layer_.reset(); 38 root_layer_.reset();
38 } 39 }
39 40
40 static LayerImpl* findRootScrollLayer(LayerImpl* layer) 41 static LayerImpl* findRootScrollLayer(LayerImpl* layer)
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 } 207 }
207 208
208 struct UpdateTilePrioritiesForLayer { 209 struct UpdateTilePrioritiesForLayer {
209 void operator()(LayerImpl *layer) { 210 void operator()(LayerImpl *layer) {
210 layer->updateTilePriorities(); 211 layer->updateTilePriorities();
211 } 212 }
212 }; 213 };
213 214
214 void LayerTreeImpl::UpdateDrawProperties(UpdateDrawPropertiesReason reason) { 215 void LayerTreeImpl::UpdateDrawProperties(UpdateDrawPropertiesReason reason) {
215 if (!needs_update_draw_properties_) { 216 if (!needs_update_draw_properties_) {
216 if (reason == UPDATE_ACTIVE_TREE_FOR_DRAW && RootLayer()) 217 if (needs_update_tile_priorities_ && RootLayer()) {
218 DCHECK_EQ(UPDATE_ACTIVE_TREE_FOR_DRAW, reason);
217 LayerTreeHostCommon::callFunctionForSubtree<UpdateTilePrioritiesForLayer>( 219 LayerTreeHostCommon::callFunctionForSubtree<UpdateTilePrioritiesForLayer>(
218 RootLayer()); 220 RootLayer());
221 needs_update_tile_priorities_ = false;
222 }
219 return; 223 return;
220 } 224 }
221 225
222 needs_update_draw_properties_ = false; 226 needs_update_draw_properties_ = false;
227 needs_update_tile_priorities_ = true;
223 render_surface_layer_list_.clear(); 228 render_surface_layer_list_.clear();
224 229
225 // For maxTextureSize. 230 // For maxTextureSize.
226 if (!layer_tree_host_impl_->renderer()) 231 if (!layer_tree_host_impl_->renderer())
227 return; 232 return;
228 233
229 if (!RootLayer()) 234 if (!RootLayer())
230 return; 235 return;
231 236
232 if (root_scroll_layer_) { 237 if (root_scroll_layer_) {
233 root_scroll_layer_->setImplTransform(ImplTransform()); 238 root_scroll_layer_->setImplTransform(ImplTransform());
234 // Setting the impl transform re-sets this. 239 // Setting the impl transform re-sets this.
235 needs_update_draw_properties_ = false; 240 needs_update_draw_properties_ = false;
236 } 241 }
237 242
238 { 243 {
239 TRACE_EVENT1("cc", "LayerTreeImpl::UpdateDrawProperties", "IsActive", IsActi veTree()); 244 TRACE_EVENT1("cc", "LayerTreeImpl::UpdateDrawProperties", "IsActive", IsActi veTree());
240 bool update_tile_priorities = 245 bool update_tile_priorities =
241 reason == UPDATE_PENDING_TREE || 246 reason == UPDATE_PENDING_TREE ||
242 reason == UPDATE_ACTIVE_TREE_FOR_DRAW; 247 reason == UPDATE_ACTIVE_TREE_FOR_DRAW;
243 LayerTreeHostCommon::calculateDrawProperties( 248 LayerTreeHostCommon::calculateDrawProperties(
244 RootLayer(), 249 RootLayer(),
245 device_viewport_size(), 250 device_viewport_size(),
246 device_scale_factor(), 251 device_scale_factor(),
247 total_page_scale_factor(), 252 total_page_scale_factor(),
248 MaxTextureSize(), 253 MaxTextureSize(),
249 settings().canUseLCDText, 254 settings().canUseLCDText,
250 render_surface_layer_list_, 255 render_surface_layer_list_,
251 update_tile_priorities); 256 update_tile_priorities);
257
258 if (update_tile_priorities)
259 needs_update_tile_priorities_ = false;
252 } 260 }
253 261
254 DCHECK(!needs_update_draw_properties_) << 262 DCHECK(!needs_update_draw_properties_) <<
255 "calcDrawProperties should not set_needs_update_draw_properties()"; 263 "calcDrawProperties should not set_needs_update_draw_properties()";
256 } 264 }
257 265
258 static void ClearRenderSurfacesOnLayerImplRecursive(LayerImpl* current) 266 static void ClearRenderSurfacesOnLayerImplRecursive(LayerImpl* current)
259 { 267 {
260 DCHECK(current); 268 DCHECK(current);
261 for (size_t i = 0; i < current->children().size(); ++i) 269 for (size_t i = 0; i < current->children().size(); ++i)
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 454
447 DebugRectHistory* LayerTreeImpl::debug_rect_history() const { 455 DebugRectHistory* LayerTreeImpl::debug_rect_history() const {
448 return layer_tree_host_impl_->debugRectHistory(); 456 return layer_tree_host_impl_->debugRectHistory();
449 } 457 }
450 458
451 AnimationRegistrar* LayerTreeImpl::animationRegistrar() const { 459 AnimationRegistrar* LayerTreeImpl::animationRegistrar() const {
452 return layer_tree_host_impl_->animationRegistrar(); 460 return layer_tree_host_impl_->animationRegistrar();
453 } 461 }
454 462
455 } // namespace cc 463 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layer_tree_impl.h ('k') | cc/picture_layer_impl.cc » ('j') | cc/picture_layer_impl.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698