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

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

Issue 2183923002: Undo scroll snaps in to_parent when NeedsSourceToParentUpdate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit change 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
« no previous file with comments | « cc/trees/property_tree.cc ('k') | cc/trees/property_tree_unittest.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 "cc/trees/property_tree_builder.h" 5 #include "cc/trees/property_tree_builder.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 float page_scale_factor; 51 float page_scale_factor;
52 bool in_subtree_of_page_scale_layer; 52 bool in_subtree_of_page_scale_layer;
53 bool affected_by_inner_viewport_bounds_delta; 53 bool affected_by_inner_viewport_bounds_delta;
54 bool affected_by_outer_viewport_bounds_delta; 54 bool affected_by_outer_viewport_bounds_delta;
55 bool should_flatten; 55 bool should_flatten;
56 bool target_is_clipped; 56 bool target_is_clipped;
57 bool is_hidden; 57 bool is_hidden;
58 uint32_t main_thread_scrolling_reasons; 58 uint32_t main_thread_scrolling_reasons;
59 bool scroll_tree_parent_created_by_uninheritable_criteria; 59 bool scroll_tree_parent_created_by_uninheritable_criteria;
60 const gfx::Transform* device_transform; 60 const gfx::Transform* device_transform;
61 gfx::Vector2dF scroll_snap;
62 gfx::Transform compound_transform_since_render_target; 61 gfx::Transform compound_transform_since_render_target;
63 bool axis_align_since_render_target; 62 bool axis_align_since_render_target;
64 SkColor safe_opaque_background_color; 63 SkColor safe_opaque_background_color;
65 }; 64 };
66 65
67 template <typename LayerType> 66 template <typename LayerType>
68 struct DataForRecursionFromChild { 67 struct DataForRecursionFromChild {
69 int num_copy_requests_in_subtree; 68 int num_copy_requests_in_subtree;
70 69
71 DataForRecursionFromChild() : num_copy_requests_in_subtree(0) {} 70 DataForRecursionFromChild() : num_copy_requests_in_subtree(0) {}
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 LayerType* source = Parent(layer); 532 LayerType* source = Parent(layer);
534 source_offset += source->offset_to_transform_parent(); 533 source_offset += source->offset_to_transform_parent();
535 source_index = source->transform_tree_index(); 534 source_index = source->transform_tree_index();
536 } else if (!is_fixed) { 535 } else if (!is_fixed) {
537 source_offset = transform_parent->offset_to_transform_parent(); 536 source_offset = transform_parent->offset_to_transform_parent();
538 } else { 537 } else {
539 source_offset = data_from_ancestor.transform_tree_parent 538 source_offset = data_from_ancestor.transform_tree_parent
540 ->offset_to_transform_parent(); 539 ->offset_to_transform_parent();
541 source_index = 540 source_index =
542 data_from_ancestor.transform_tree_parent->transform_tree_index(); 541 data_from_ancestor.transform_tree_parent->transform_tree_index();
543 source_offset -= data_from_ancestor.scroll_snap;
544 } 542 }
545 } 543 }
546 544
547 if (IsContainerForFixedPositionLayers(layer) || is_root) { 545 if (IsContainerForFixedPositionLayers(layer) || is_root) {
548 data_for_children->affected_by_inner_viewport_bounds_delta = 546 data_for_children->affected_by_inner_viewport_bounds_delta =
549 layer == data_from_ancestor.inner_viewport_scroll_layer; 547 layer == data_from_ancestor.inner_viewport_scroll_layer;
550 data_for_children->affected_by_outer_viewport_bounds_delta = 548 data_for_children->affected_by_outer_viewport_bounds_delta =
551 layer == data_from_ancestor.outer_viewport_scroll_layer; 549 layer == data_from_ancestor.outer_viewport_scroll_layer;
552 if (is_scrollable) { 550 if (is_scrollable) {
553 DCHECK(!is_root); 551 DCHECK(!is_root);
554 DCHECK(layer->transform().IsIdentity()); 552 DCHECK(layer->transform().IsIdentity());
555 data_for_children->transform_fixed_parent = Parent(layer); 553 data_for_children->transform_fixed_parent = Parent(layer);
556 } else { 554 } else {
557 data_for_children->transform_fixed_parent = layer; 555 data_for_children->transform_fixed_parent = layer;
558 } 556 }
559 } 557 }
560 data_for_children->transform_tree_parent = layer; 558 data_for_children->transform_tree_parent = layer;
561 559
562 if (IsContainerForFixedPositionLayers(layer) || is_fixed)
563 data_for_children->scroll_snap = gfx::Vector2dF();
564
565 if (!requires_node) { 560 if (!requires_node) {
566 data_for_children->should_flatten |= ShouldFlattenTransform(layer); 561 data_for_children->should_flatten |= ShouldFlattenTransform(layer);
567 gfx::Vector2dF local_offset = layer->position().OffsetFromOrigin() + 562 gfx::Vector2dF local_offset = layer->position().OffsetFromOrigin() +
568 layer->transform().To2dTranslation(); 563 layer->transform().To2dTranslation();
569 gfx::Vector2dF source_to_parent; 564 gfx::Vector2dF source_to_parent;
570 if (source_index != parent_index) { 565 if (source_index != parent_index) {
571 gfx::Transform to_parent; 566 gfx::Transform to_parent;
572 data_from_ancestor.property_trees->transform_tree.ComputeTranslation( 567 data_from_ancestor.property_trees->transform_tree.ComputeTranslation(
573 source_index, parent_index, &to_parent); 568 source_index, parent_index, &to_parent);
574 source_to_parent = to_parent.To2dTranslation(); 569 source_to_parent = to_parent.To2dTranslation();
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 node->update_pre_local_transform(TransformOrigin(layer)); 682 node->update_pre_local_transform(TransformOrigin(layer));
688 683
689 node->needs_local_transform_update = true; 684 node->needs_local_transform_update = true;
690 data_from_ancestor.property_trees->transform_tree.UpdateTransforms(node->id); 685 data_from_ancestor.property_trees->transform_tree.UpdateTransforms(node->id);
691 686
692 layer->set_offset_to_transform_parent(gfx::Vector2dF()); 687 layer->set_offset_to_transform_parent(gfx::Vector2dF());
693 688
694 // Flattening (if needed) will be handled by |node|. 689 // Flattening (if needed) will be handled by |node|.
695 layer->set_should_flatten_transform_from_property_tree(false); 690 layer->set_should_flatten_transform_from_property_tree(false);
696 691
697 data_for_children->scroll_snap += node->scroll_snap;
698
699 node->owner_id = layer->id(); 692 node->owner_id = layer->id();
700 693
701 return true; 694 return true;
702 } 695 }
703 696
704 static inline bool HasPotentialOpacityAnimation(Layer* layer) { 697 static inline bool HasPotentialOpacityAnimation(Layer* layer) {
705 return HasPotentiallyRunningOpacityAnimation(layer) || 698 return HasPotentiallyRunningOpacityAnimation(layer) ||
706 layer->OpacityCanAnimateOnImplThread(); 699 layer->OpacityCanAnimateOnImplThread();
707 } 700 }
708 701
(...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after
1473 color = SkColorSetA(color, 255); 1466 color = SkColorSetA(color, 255);
1474 BuildPropertyTreesTopLevelInternal( 1467 BuildPropertyTreesTopLevelInternal(
1475 root_layer, page_scale_layer, inner_viewport_scroll_layer, 1468 root_layer, page_scale_layer, inner_viewport_scroll_layer,
1476 outer_viewport_scroll_layer, overscroll_elasticity_layer, 1469 outer_viewport_scroll_layer, overscroll_elasticity_layer,
1477 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, 1470 elastic_overscroll, page_scale_factor, device_scale_factor, viewport,
1478 device_transform, property_trees, color); 1471 device_transform, property_trees, color);
1479 property_trees->ResetCachedData(); 1472 property_trees->ResetCachedData();
1480 } 1473 }
1481 1474
1482 } // namespace cc 1475 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/property_tree.cc ('k') | cc/trees/property_tree_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698