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

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

Issue 2004973002: Revert of cc : Add IsInIdtoIndexMap to property tres (patchset #4 id:60001 of https://codereview.ch… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 | « no previous file | cc/layers/layer_impl.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 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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 DCHECK_EQ(this, replica_layer_->parent()); 112 DCHECK_EQ(this, replica_layer_->parent());
113 replica_layer_->RemoveFromParent(); 113 replica_layer_->RemoveFromParent();
114 } 114 }
115 } 115 }
116 116
117 void Layer::SetLayerTreeHost(LayerTreeHost* host) { 117 void Layer::SetLayerTreeHost(LayerTreeHost* host) {
118 if (layer_tree_host_ == host) 118 if (layer_tree_host_ == host)
119 return; 119 return;
120 120
121 if (layer_tree_host_) { 121 if (layer_tree_host_) {
122 layer_tree_host_->property_trees()->RemoveIdFromIdToIndexMaps(id());
123 layer_tree_host_->property_trees()->needs_rebuild = true; 122 layer_tree_host_->property_trees()->needs_rebuild = true;
124 layer_tree_host_->UnregisterLayer(this); 123 layer_tree_host_->UnregisterLayer(this);
125 } 124 }
126 if (host) { 125 if (host) {
127 host->property_trees()->needs_rebuild = true; 126 host->property_trees()->needs_rebuild = true;
128 host->RegisterLayer(this); 127 host->RegisterLayer(this);
129 } 128 }
130 129
131 layer_tree_host_ = host; 130 layer_tree_host_ = host;
132 InvalidatePropertyTreesIndices(); 131 InvalidatePropertyTreesIndices();
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 void Layer::SetPosition(const gfx::PointF& position) { 580 void Layer::SetPosition(const gfx::PointF& position) {
582 DCHECK(IsPropertyChangeAllowed()); 581 DCHECK(IsPropertyChangeAllowed());
583 if (position_ == position) 582 if (position_ == position)
584 return; 583 return;
585 position_ = position; 584 position_ = position;
586 585
587 if (!layer_tree_host_) 586 if (!layer_tree_host_)
588 return; 587 return;
589 588
590 SetSubtreePropertyChanged(); 589 SetSubtreePropertyChanged();
591 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 590 if (TransformNode* transform_node =
592 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 591 layer_tree_host_->property_trees()->transform_tree.Node(
593 id())) { 592 transform_tree_index())) {
594 DCHECK_EQ(transform_tree_index(), 593 if (transform_node->owner_id == id()) {
595 property_trees->transform_id_to_index_map[id()]); 594 transform_node->data.update_post_local_transform(position,
596 TransformNode* transform_node = 595 transform_origin());
597 property_trees->transform_tree.Node(transform_tree_index()); 596 transform_node->data.needs_local_transform_update = true;
598 transform_node->data.update_post_local_transform(position, 597 transform_node->data.transform_changed = true;
599 transform_origin()); 598 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true);
600 transform_node->data.needs_local_transform_update = true; 599 SetNeedsCommitNoRebuild();
601 transform_node->data.transform_changed = true; 600 return;
602 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true); 601 }
603 SetNeedsCommitNoRebuild();
604 return;
605 } 602 }
606 603
607 SetNeedsCommit(); 604 SetNeedsCommit();
608 } 605 }
609 606
610 bool Layer::IsContainerForFixedPositionLayers() const { 607 bool Layer::IsContainerForFixedPositionLayers() const {
611 if (!transform_.IsIdentityOrTranslation()) 608 if (!transform_.IsIdentityOrTranslation())
612 return true; 609 return true;
613 if (parent_ && !parent_->transform_.IsIdentityOrTranslation()) 610 if (parent_ && !parent_->transform_.IsIdentityOrTranslation())
614 return true; 611 return true;
(...skipping 15 matching lines...) Expand all
630 } 627 }
631 } 628 }
632 629
633 void Layer::SetTransform(const gfx::Transform& transform) { 630 void Layer::SetTransform(const gfx::Transform& transform) {
634 DCHECK(IsPropertyChangeAllowed()); 631 DCHECK(IsPropertyChangeAllowed());
635 if (transform_ == transform) 632 if (transform_ == transform)
636 return; 633 return;
637 634
638 SetSubtreePropertyChanged(); 635 SetSubtreePropertyChanged();
639 if (layer_tree_host_) { 636 if (layer_tree_host_) {
640 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 637 if (TransformNode* transform_node =
641 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 638 layer_tree_host_->property_trees()->transform_tree.Node(
642 id())) { 639 transform_tree_index())) {
643 // We need to trigger a rebuild if we could have affected 2d axis 640 if (transform_node->owner_id == id()) {
644 // alignment. We'll check to see if transform and transform_ are axis 641 // We need to trigger a rebuild if we could have affected 2d axis
645 // align with respect to one another. 642 // alignment. We'll check to see if transform and transform_ are axis
646 DCHECK_EQ(transform_tree_index(), 643 // align with respect to one another.
647 property_trees->transform_id_to_index_map[id()]); 644 bool preserves_2d_axis_alignment =
648 TransformNode* transform_node = 645 Are2dAxisAligned(transform_, transform);
649 property_trees->transform_tree.Node(transform_tree_index()); 646 transform_node->data.local = transform;
650 bool preserves_2d_axis_alignment = 647 transform_node->data.needs_local_transform_update = true;
651 Are2dAxisAligned(transform_, transform); 648 transform_node->data.transform_changed = true;
652 transform_node->data.local = transform; 649 layer_tree_host_->property_trees()->transform_tree.set_needs_update(
653 transform_node->data.needs_local_transform_update = true; 650 true);
654 transform_node->data.transform_changed = true; 651 if (preserves_2d_axis_alignment)
655 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true); 652 SetNeedsCommitNoRebuild();
656 if (preserves_2d_axis_alignment) 653 else
657 SetNeedsCommitNoRebuild(); 654 SetNeedsCommit();
658 else 655 transform_ = transform;
659 SetNeedsCommit(); 656 return;
660 transform_ = transform; 657 }
661 return;
662 } 658 }
663 } 659 }
664 660
665 transform_ = transform; 661 transform_ = transform;
666 662
667 SetNeedsCommit(); 663 SetNeedsCommit();
668 } 664 }
669 665
670 void Layer::SetTransformOrigin(const gfx::Point3F& transform_origin) { 666 void Layer::SetTransformOrigin(const gfx::Point3F& transform_origin) {
671 DCHECK(IsPropertyChangeAllowed()); 667 DCHECK(IsPropertyChangeAllowed());
672 if (transform_origin_ == transform_origin) 668 if (transform_origin_ == transform_origin)
673 return; 669 return;
674 transform_origin_ = transform_origin; 670 transform_origin_ = transform_origin;
675 671
676 if (!layer_tree_host_) 672 if (!layer_tree_host_)
677 return; 673 return;
678 674
679 SetSubtreePropertyChanged(); 675 SetSubtreePropertyChanged();
680 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 676 if (TransformNode* transform_node =
681 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 677 layer_tree_host_->property_trees()->transform_tree.Node(
682 id())) { 678 transform_tree_index())) {
683 DCHECK_EQ(transform_tree_index(), 679 if (transform_node->owner_id == id()) {
684 property_trees->transform_id_to_index_map[id()]); 680 transform_node->data.update_pre_local_transform(transform_origin);
685 TransformNode* transform_node = 681 transform_node->data.update_post_local_transform(position(),
686 property_trees->transform_tree.Node(transform_tree_index()); 682 transform_origin);
687 transform_node->data.update_pre_local_transform(transform_origin); 683 transform_node->data.needs_local_transform_update = true;
688 transform_node->data.update_post_local_transform(position(), 684 transform_node->data.transform_changed = true;
689 transform_origin); 685 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true);
690 transform_node->data.needs_local_transform_update = true; 686 SetNeedsCommitNoRebuild();
691 transform_node->data.transform_changed = true; 687 return;
692 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true); 688 }
693 SetNeedsCommitNoRebuild();
694 return;
695 } 689 }
696 690
697 SetNeedsCommit(); 691 SetNeedsCommit();
698 } 692 }
699 693
700 bool Layer::AnimationsPreserveAxisAlignment() const { 694 bool Layer::AnimationsPreserveAxisAlignment() const {
701 DCHECK(layer_tree_host_); 695 DCHECK(layer_tree_host_);
702 return layer_tree_host_->AnimationsPreserveAxisAlignment(this); 696 return layer_tree_host_->AnimationsPreserveAxisAlignment(this);
703 } 697 }
704 698
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
798 void Layer::SetScrollOffset(const gfx::ScrollOffset& scroll_offset) { 792 void Layer::SetScrollOffset(const gfx::ScrollOffset& scroll_offset) {
799 DCHECK(IsPropertyChangeAllowed()); 793 DCHECK(IsPropertyChangeAllowed());
800 794
801 if (scroll_offset_ == scroll_offset) 795 if (scroll_offset_ == scroll_offset)
802 return; 796 return;
803 scroll_offset_ = scroll_offset; 797 scroll_offset_ = scroll_offset;
804 798
805 if (!layer_tree_host_) 799 if (!layer_tree_host_)
806 return; 800 return;
807 801
808 PropertyTrees* property_trees = layer_tree_host_->property_trees();
809 if (scroll_tree_index() != -1 && scrollable()) 802 if (scroll_tree_index() != -1 && scrollable())
810 property_trees->scroll_tree.SetScrollOffset(id(), scroll_offset); 803 layer_tree_host_->property_trees()->scroll_tree.SetScrollOffset(
804 id(), scroll_offset);
811 805
812 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 806 if (TransformNode* transform_node =
813 id())) { 807 layer_tree_host_->property_trees()->transform_tree.Node(
814 DCHECK_EQ(transform_tree_index(), 808 transform_tree_index())) {
815 property_trees->transform_id_to_index_map[id()]); 809 if (transform_node->owner_id == id()) {
816 TransformNode* transform_node = 810 transform_node->data.scroll_offset = CurrentScrollOffset();
817 property_trees->transform_tree.Node(transform_tree_index()); 811 transform_node->data.needs_local_transform_update = true;
818 transform_node->data.scroll_offset = CurrentScrollOffset(); 812 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true);
819 transform_node->data.needs_local_transform_update = true; 813 SetNeedsCommitNoRebuild();
820 property_trees->transform_tree.set_needs_update(true); 814 return;
821 SetNeedsCommitNoRebuild(); 815 }
822 return;
823 } 816 }
824 817
825 SetNeedsCommit(); 818 SetNeedsCommit();
826 } 819 }
827 820
828 void Layer::SetScrollOffsetFromImplSide( 821 void Layer::SetScrollOffsetFromImplSide(
829 const gfx::ScrollOffset& scroll_offset) { 822 const gfx::ScrollOffset& scroll_offset) {
830 DCHECK(IsPropertyChangeAllowed()); 823 DCHECK(IsPropertyChangeAllowed());
831 // This function only gets called during a BeginMainFrame, so there 824 // This function only gets called during a BeginMainFrame, so there
832 // is no need to call SetNeedsUpdate here. 825 // is no need to call SetNeedsUpdate here.
833 DCHECK(layer_tree_host_ && layer_tree_host_->CommitRequested()); 826 DCHECK(layer_tree_host_ && layer_tree_host_->CommitRequested());
834 if (scroll_offset_ == scroll_offset) 827 if (scroll_offset_ == scroll_offset)
835 return; 828 return;
836 scroll_offset_ = scroll_offset; 829 scroll_offset_ = scroll_offset;
837 SetNeedsPushProperties(); 830 SetNeedsPushProperties();
838 831
839 bool needs_rebuild = true; 832 bool needs_rebuild = true;
840 833
841 PropertyTrees* property_trees = layer_tree_host_->property_trees();
842 if (scroll_tree_index() != -1 && scrollable()) 834 if (scroll_tree_index() != -1 && scrollable())
843 property_trees->scroll_tree.SetScrollOffset(id(), scroll_offset); 835 layer_tree_host_->property_trees()->scroll_tree.SetScrollOffset(
836 id(), scroll_offset);
844 837
845 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 838 if (TransformNode* transform_node =
846 id())) { 839 layer_tree_host_->property_trees()->transform_tree.Node(
847 DCHECK_EQ(transform_tree_index(), 840 transform_tree_index())) {
848 property_trees->transform_id_to_index_map[id()]); 841 if (transform_node->owner_id == id()) {
849 TransformNode* transform_node = 842 transform_node->data.scroll_offset = CurrentScrollOffset();
850 property_trees->transform_tree.Node(transform_tree_index()); 843 transform_node->data.needs_local_transform_update = true;
851 transform_node->data.scroll_offset = CurrentScrollOffset(); 844 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true);
852 transform_node->data.needs_local_transform_update = true; 845 needs_rebuild = false;
853 property_trees->transform_tree.set_needs_update(true); 846 }
854 needs_rebuild = false;
855 } 847 }
856 848
857 if (needs_rebuild) 849 if (needs_rebuild)
858 property_trees->needs_rebuild = true; 850 layer_tree_host_->property_trees()->needs_rebuild = true;
859 851
860 if (!did_scroll_callback_.is_null()) 852 if (!did_scroll_callback_.is_null())
861 did_scroll_callback_.Run(); 853 did_scroll_callback_.Run();
862 // The callback could potentially change the layer structure: 854 // The callback could potentially change the layer structure:
863 // "this" may have been destroyed during the process. 855 // "this" may have been destroyed during the process.
864 } 856 }
865 857
866 void Layer::SetScrollClipLayerId(int clip_layer_id) { 858 void Layer::SetScrollClipLayerId(int clip_layer_id) {
867 DCHECK(IsPropertyChangeAllowed()); 859 DCHECK(IsPropertyChangeAllowed());
868 if (scroll_clip_layer_id_ == clip_layer_id) 860 if (scroll_clip_layer_id_ == clip_layer_id)
(...skipping 744 matching lines...) Expand 10 before | Expand all | Expand 10 after
1613 } 1605 }
1614 1606
1615 void Layer::OnOpacityAnimated(float opacity) { 1607 void Layer::OnOpacityAnimated(float opacity) {
1616 if (opacity_ == opacity) 1608 if (opacity_ == opacity)
1617 return; 1609 return;
1618 opacity_ = opacity; 1610 opacity_ = opacity;
1619 // Changing the opacity may make a previously hidden layer visible, so a new 1611 // Changing the opacity may make a previously hidden layer visible, so a new
1620 // recording may be needed. 1612 // recording may be needed.
1621 SetNeedsUpdate(); 1613 SetNeedsUpdate();
1622 if (layer_tree_host_) { 1614 if (layer_tree_host_) {
1623 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 1615 if (EffectNode* node = layer_tree_host_->property_trees()->effect_tree.Node(
1624 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, 1616 effect_tree_index())) {
1625 id())) { 1617 if (node->owner_id == id()) {
1626 DCHECK_EQ(effect_tree_index(), 1618 node->data.opacity = opacity;
1627 property_trees->effect_id_to_index_map[id()]); 1619 layer_tree_host_->property_trees()->effect_tree.set_needs_update(true);
1628 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); 1620 }
1629 node->data.opacity = opacity;
1630 property_trees->effect_tree.set_needs_update(true);
1631 } 1621 }
1632 } 1622 }
1633 } 1623 }
1634 1624
1635 void Layer::OnTransformAnimated(const gfx::Transform& transform) { 1625 void Layer::OnTransformAnimated(const gfx::Transform& transform) {
1636 if (transform_ == transform) 1626 if (transform_ == transform)
1637 return; 1627 return;
1638 transform_ = transform; 1628 transform_ = transform;
1639 // Changing the transform may change the visible part of this layer, so a new 1629 // Changing the transform may change the visible part of this layer, so a new
1640 // recording may be needed. 1630 // recording may be needed.
1641 SetNeedsUpdate(); 1631 SetNeedsUpdate();
1642 if (layer_tree_host_) { 1632 if (layer_tree_host_) {
1643 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 1633 if (TransformNode* node =
1644 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 1634 layer_tree_host_->property_trees()->transform_tree.Node(
1645 id())) { 1635 transform_tree_index())) {
1646 DCHECK_EQ(transform_tree_index(), 1636 if (node->owner_id == id()) {
1647 property_trees->transform_id_to_index_map[id()]); 1637 node->data.local = transform;
1648 TransformNode* node = 1638 node->data.needs_local_transform_update = true;
1649 property_trees->transform_tree.Node(transform_tree_index()); 1639 node->data.has_potential_animation = true;
1650 node->data.local = transform; 1640 layer_tree_host_->property_trees()->transform_tree.set_needs_update(
1651 node->data.needs_local_transform_update = true; 1641 true);
1652 node->data.has_potential_animation = true; 1642 }
1653 property_trees->transform_tree.set_needs_update(true);
1654 } 1643 }
1655 } 1644 }
1656 } 1645 }
1657 1646
1658 void Layer::OnScrollOffsetAnimated(const gfx::ScrollOffset& scroll_offset) { 1647 void Layer::OnScrollOffsetAnimated(const gfx::ScrollOffset& scroll_offset) {
1659 // Do nothing. Scroll deltas will be sent from the compositor thread back 1648 // Do nothing. Scroll deltas will be sent from the compositor thread back
1660 // to the main thread in the same manner as during non-animated 1649 // to the main thread in the same manner as during non-animated
1661 // compositor-driven scrolling. 1650 // compositor-driven scrolling.
1662 } 1651 }
1663 1652
1664 void Layer::OnTransformIsCurrentlyAnimatingChanged( 1653 void Layer::OnTransformIsCurrentlyAnimatingChanged(
1665 bool is_currently_animating) { 1654 bool is_currently_animating) {
1666 DCHECK(layer_tree_host_); 1655 DCHECK(layer_tree_host_);
1667 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 1656 TransformTree& transform_tree =
1668 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 1657 layer_tree_host_->property_trees()->transform_tree;
1669 id())) 1658 TransformNode* node = transform_tree.Node(transform_tree_index());
1659 if (!node)
1670 return; 1660 return;
1671 DCHECK_EQ(transform_tree_index(), 1661
1672 property_trees->transform_id_to_index_map[id()]); 1662 if (node->owner_id == id())
1673 TransformNode* node = 1663 node->data.is_currently_animating = is_currently_animating;
1674 property_trees->transform_tree.Node(transform_tree_index());
1675 node->data.is_currently_animating = is_currently_animating;
1676 } 1664 }
1677 1665
1678 void Layer::OnTransformIsPotentiallyAnimatingChanged( 1666 void Layer::OnTransformIsPotentiallyAnimatingChanged(
1679 bool has_potential_animation) { 1667 bool has_potential_animation) {
1680 if (!layer_tree_host_) 1668 if (!layer_tree_host_)
1681 return; 1669 return;
1682 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 1670 TransformTree& transform_tree =
1683 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 1671 layer_tree_host_->property_trees()->transform_tree;
1684 id())) 1672 TransformNode* node = transform_tree.Node(transform_tree_index());
1673 if (!node)
1685 return; 1674 return;
1686 DCHECK_EQ(transform_tree_index(),
1687 property_trees->transform_id_to_index_map[id()]);
1688 TransformNode* node =
1689 property_trees->transform_tree.Node(transform_tree_index());
1690 1675
1691 node->data.has_potential_animation = has_potential_animation; 1676 if (node->owner_id == id()) {
1692 if (has_potential_animation) { 1677 node->data.has_potential_animation = has_potential_animation;
1693 float maximum_target_scale = 0.f; 1678 if (has_potential_animation) {
1694 node->data.local_maximum_animation_target_scale = 1679 float maximum_target_scale = 0.f;
1695 MaximumTargetScale(&maximum_target_scale) ? maximum_target_scale : 0.f; 1680 node->data.local_maximum_animation_target_scale =
1696 1681 MaximumTargetScale(&maximum_target_scale) ? maximum_target_scale
1697 float animation_start_scale = 0.f;
1698 node->data.local_starting_animation_scale =
1699 AnimationStartScale(&animation_start_scale) ? animation_start_scale
1700 : 0.f; 1682 : 0.f;
1701 1683
1702 node->data.has_only_translation_animations = HasOnlyTranslationTransforms(); 1684 float animation_start_scale = 0.f;
1685 node->data.local_starting_animation_scale =
1686 AnimationStartScale(&animation_start_scale) ? animation_start_scale
1687 : 0.f;
1688
1689 node->data.has_only_translation_animations =
1690 HasOnlyTranslationTransforms();
1703 1691
1704 } else { 1692 } else {
1705 node->data.local_maximum_animation_target_scale = 0.f; 1693 node->data.local_maximum_animation_target_scale = 0.f;
1706 node->data.local_starting_animation_scale = 0.f; 1694 node->data.local_starting_animation_scale = 0.f;
1707 node->data.has_only_translation_animations = true; 1695 node->data.has_only_translation_animations = true;
1708 } 1696 }
1709 property_trees->transform_tree.set_needs_update(true); 1697 transform_tree.set_needs_update(true);
1698 }
1710 } 1699 }
1711 1700
1712 void Layer::OnOpacityIsCurrentlyAnimatingChanged(bool is_currently_animating) { 1701 void Layer::OnOpacityIsCurrentlyAnimatingChanged(bool is_currently_animating) {
1713 DCHECK(layer_tree_host_); 1702 DCHECK(layer_tree_host_);
1714 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 1703 EffectTree& effect_tree = layer_tree_host_->property_trees()->effect_tree;
1715 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) 1704 EffectNode* node = effect_tree.Node(effect_tree_index());
1705 if (!node)
1716 return; 1706 return;
1717 DCHECK_EQ(effect_tree_index(), property_trees->effect_id_to_index_map[id()]); 1707
1718 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); 1708 if (node->owner_id == id())
1719 node->data.is_currently_animating_opacity = is_currently_animating; 1709 node->data.is_currently_animating_opacity = is_currently_animating;
1720 } 1710 }
1721 1711
1722 void Layer::OnOpacityIsPotentiallyAnimatingChanged( 1712 void Layer::OnOpacityIsPotentiallyAnimatingChanged(
1723 bool has_potential_animation) { 1713 bool has_potential_animation) {
1724 DCHECK(layer_tree_host_); 1714 DCHECK(layer_tree_host_);
1725 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 1715 EffectTree& effect_tree = layer_tree_host_->property_trees()->effect_tree;
1726 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) 1716 EffectNode* node = effect_tree.Node(effect_tree_index());
1717 if (!node)
1727 return; 1718 return;
1728 DCHECK_EQ(effect_tree_index(), property_trees->effect_id_to_index_map[id()]); 1719 if (node->owner_id == id()) {
1729 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); 1720 node->data.has_potential_opacity_animation =
1730 node->data.has_potential_opacity_animation = 1721 has_potential_animation || OpacityCanAnimateOnImplThread();
1731 has_potential_animation || OpacityCanAnimateOnImplThread(); 1722 effect_tree.set_needs_update(true);
1732 property_trees->effect_tree.set_needs_update(true); 1723 }
1733 } 1724 }
1734 1725
1735 bool Layer::HasActiveAnimationForTesting() const { 1726 bool Layer::HasActiveAnimationForTesting() const {
1736 return layer_tree_host_ ? layer_tree_host_->HasActiveAnimationForTesting(this) 1727 return layer_tree_host_ ? layer_tree_host_->HasActiveAnimationForTesting(this)
1737 : false; 1728 : false;
1738 } 1729 }
1739 1730
1740 void Layer::SetHasWillChangeTransformHint(bool has_will_change) { 1731 void Layer::SetHasWillChangeTransformHint(bool has_will_change) {
1741 if (has_will_change_transform_hint_ == has_will_change) 1732 if (has_will_change_transform_hint_ == has_will_change)
1742 return; 1733 return;
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1824 ->data.num_copy_requests_in_subtree; 1815 ->data.num_copy_requests_in_subtree;
1825 } 1816 }
1826 1817
1827 gfx::Transform Layer::screen_space_transform() const { 1818 gfx::Transform Layer::screen_space_transform() const {
1828 DCHECK_NE(transform_tree_index_, -1); 1819 DCHECK_NE(transform_tree_index_, -1);
1829 return draw_property_utils::ScreenSpaceTransform( 1820 return draw_property_utils::ScreenSpaceTransform(
1830 this, layer_tree_host_->property_trees()->transform_tree); 1821 this, layer_tree_host_->property_trees()->transform_tree);
1831 } 1822 }
1832 1823
1833 } // namespace cc 1824 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/layers/layer_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698