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

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

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