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

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

Issue 1144993004: cc: Make impl-thread property trees handle fixed-position layers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@EnablePropertyTreeVerificationOnImpl
Patch Set: Don't rebuild impl property trees Created 5 years, 6 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
« cc/trees/property_tree.h ('K') | « cc/trees/property_tree.cc ('k') | no next file » | 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 "cc/trees/property_tree_builder.h" 5 #include "cc/trees/property_tree_builder.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 9
10 #include "cc/base/math_util.h" 10 #include "cc/base/math_util.h"
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 source_offset = data_from_ancestor.transform_tree_parent 205 source_offset = data_from_ancestor.transform_tree_parent
206 ->offset_to_transform_parent(); 206 ->offset_to_transform_parent();
207 source_index = 207 source_index =
208 data_from_ancestor.transform_tree_parent->transform_tree_index(); 208 data_from_ancestor.transform_tree_parent->transform_tree_index();
209 } 209 }
210 source_offset += data_from_ancestor.scroll_compensation_adjustment; 210 source_offset += data_from_ancestor.scroll_compensation_adjustment;
211 } 211 }
212 } 212 }
213 213
214 if (layer->IsContainerForFixedPositionLayers() || is_root) { 214 if (layer->IsContainerForFixedPositionLayers() || is_root) {
215 DCHECK(!is_scrollable || layer->transform().IsIdentity()); 215 if (is_scrollable) {
216 data_for_children->transform_fixed_parent = layer; 216 DCHECK(!is_root);
217 DCHECK(layer->transform().IsIdentity());
218 data_for_children->transform_fixed_parent = layer->parent();
219 } else {
220 data_for_children->transform_fixed_parent = layer;
221 }
217 } 222 }
218 data_for_children->transform_tree_parent = layer; 223 data_for_children->transform_tree_parent = layer;
219 224
220 if (layer->IsContainerForFixedPositionLayers() || is_fixed) 225 if (layer->IsContainerForFixedPositionLayers() || is_fixed)
221 data_for_children->scroll_compensation_adjustment = gfx::Vector2dF(); 226 data_for_children->scroll_compensation_adjustment = gfx::Vector2dF();
222 227
223 if (!requires_node) { 228 if (!requires_node) {
224 data_for_children->should_flatten |= layer->should_flatten_transform(); 229 data_for_children->should_flatten |= layer->should_flatten_transform();
225 gfx::Vector2dF local_offset = layer->position().OffsetFromOrigin() + 230 gfx::Vector2dF local_offset = layer->position().OffsetFromOrigin() +
226 layer->transform().To2dTranslation(); 231 layer->transform().To2dTranslation();
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 } // namespace 384 } // namespace
380 385
381 template <typename LayerType> 386 template <typename LayerType>
382 void BuildPropertyTreesTopLevelInternal(LayerType* root_layer, 387 void BuildPropertyTreesTopLevelInternal(LayerType* root_layer,
383 const LayerType* page_scale_layer, 388 const LayerType* page_scale_layer,
384 float page_scale_factor, 389 float page_scale_factor,
385 float device_scale_factor, 390 float device_scale_factor,
386 const gfx::Rect& viewport, 391 const gfx::Rect& viewport,
387 const gfx::Transform& device_transform, 392 const gfx::Transform& device_transform,
388 PropertyTrees* property_trees) { 393 PropertyTrees* property_trees) {
394 if (!property_trees->needs_rebuild)
395 return;
ajuma 2015/05/29 17:47:08 This change causes about 16 unit tests to fail, si
enne (OOO) 2015/05/29 20:07:53 Agreed that the default should be don't rebuild un
396
389 property_trees->sequence_number++; 397 property_trees->sequence_number++;
390 398
391 DataForRecursion<LayerType> data_for_recursion; 399 DataForRecursion<LayerType> data_for_recursion;
392 data_for_recursion.transform_tree = &property_trees->transform_tree; 400 data_for_recursion.transform_tree = &property_trees->transform_tree;
393 data_for_recursion.clip_tree = &property_trees->clip_tree; 401 data_for_recursion.clip_tree = &property_trees->clip_tree;
394 data_for_recursion.opacity_tree = &property_trees->opacity_tree; 402 data_for_recursion.opacity_tree = &property_trees->opacity_tree;
395 data_for_recursion.transform_tree_parent = nullptr; 403 data_for_recursion.transform_tree_parent = nullptr;
396 data_for_recursion.transform_fixed_parent = nullptr; 404 data_for_recursion.transform_fixed_parent = nullptr;
397 data_for_recursion.render_target = root_layer; 405 data_for_recursion.render_target = root_layer;
398 data_for_recursion.clip_tree_parent = 0; 406 data_for_recursion.clip_tree_parent = 0;
(...skipping 27 matching lines...) Expand all
426 } 434 }
427 435
428 void PropertyTreeBuilder::BuildPropertyTrees( 436 void PropertyTreeBuilder::BuildPropertyTrees(
429 Layer* root_layer, 437 Layer* root_layer,
430 const Layer* page_scale_layer, 438 const Layer* page_scale_layer,
431 float page_scale_factor, 439 float page_scale_factor,
432 float device_scale_factor, 440 float device_scale_factor,
433 const gfx::Rect& viewport, 441 const gfx::Rect& viewport,
434 const gfx::Transform& device_transform, 442 const gfx::Transform& device_transform,
435 PropertyTrees* property_trees) { 443 PropertyTrees* property_trees) {
436 // TODO(enne): hoist this out of here
437 if (!property_trees->needs_rebuild)
438 return;
439
440 BuildPropertyTreesTopLevelInternal( 444 BuildPropertyTreesTopLevelInternal(
441 root_layer, page_scale_layer, page_scale_factor, device_scale_factor, 445 root_layer, page_scale_layer, page_scale_factor, device_scale_factor,
442 viewport, device_transform, property_trees); 446 viewport, device_transform, property_trees);
443 } 447 }
444 448
445 void PropertyTreeBuilder::BuildPropertyTrees( 449 void PropertyTreeBuilder::BuildPropertyTrees(
446 LayerImpl* root_layer, 450 LayerImpl* root_layer,
447 const LayerImpl* page_scale_layer, 451 const LayerImpl* page_scale_layer,
448 float page_scale_factor, 452 float page_scale_factor,
449 float device_scale_factor, 453 float device_scale_factor,
450 const gfx::Rect& viewport, 454 const gfx::Rect& viewport,
451 const gfx::Transform& device_transform, 455 const gfx::Transform& device_transform,
452 PropertyTrees* property_trees) { 456 PropertyTrees* property_trees) {
453 BuildPropertyTreesTopLevelInternal( 457 BuildPropertyTreesTopLevelInternal(
454 root_layer, page_scale_layer, page_scale_factor, device_scale_factor, 458 root_layer, page_scale_layer, page_scale_factor, device_scale_factor,
455 viewport, device_transform, property_trees); 459 viewport, device_transform, property_trees);
456 } 460 }
457 461
458 } // namespace cc 462 } // namespace cc
OLDNEW
« cc/trees/property_tree.h ('K') | « cc/trees/property_tree.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698