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

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

Issue 2118993002: Detemplatize cc property nodes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
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 13 matching lines...) Expand all
24 #include "cc/layers/layer_impl.h" 24 #include "cc/layers/layer_impl.h"
25 #include "cc/layers/layer_proto_converter.h" 25 #include "cc/layers/layer_proto_converter.h"
26 #include "cc/layers/scrollbar_layer_interface.h" 26 #include "cc/layers/scrollbar_layer_interface.h"
27 #include "cc/output/copy_output_request.h" 27 #include "cc/output/copy_output_request.h"
28 #include "cc/output/copy_output_result.h" 28 #include "cc/output/copy_output_result.h"
29 #include "cc/proto/cc_conversions.h" 29 #include "cc/proto/cc_conversions.h"
30 #include "cc/proto/gfx_conversions.h" 30 #include "cc/proto/gfx_conversions.h"
31 #include "cc/proto/layer.pb.h" 31 #include "cc/proto/layer.pb.h"
32 #include "cc/proto/skia_conversions.h" 32 #include "cc/proto/skia_conversions.h"
33 #include "cc/trees/draw_property_utils.h" 33 #include "cc/trees/draw_property_utils.h"
34 #include "cc/trees/effect_node.h"
34 #include "cc/trees/layer_tree_host.h" 35 #include "cc/trees/layer_tree_host.h"
35 #include "cc/trees/layer_tree_impl.h" 36 #include "cc/trees/layer_tree_impl.h"
37 #include "cc/trees/transform_node.h"
36 #include "third_party/skia/include/core/SkImageFilter.h" 38 #include "third_party/skia/include/core/SkImageFilter.h"
37 #include "ui/gfx/geometry/rect_conversions.h" 39 #include "ui/gfx/geometry/rect_conversions.h"
38 #include "ui/gfx/geometry/vector2d_conversions.h" 40 #include "ui/gfx/geometry/vector2d_conversions.h"
39 41
40 namespace cc { 42 namespace cc {
41 43
42 base::StaticAtomicSequenceNumber g_next_layer_id; 44 base::StaticAtomicSequenceNumber g_next_layer_id;
43 45
44 scoped_refptr<Layer> Layer::Create() { 46 scoped_refptr<Layer> Layer::Create() {
45 return make_scoped_refptr(new Layer()); 47 return make_scoped_refptr(new Layer());
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 // non-1 value or vice-versa as render surfaces can change. 490 // non-1 value or vice-versa as render surfaces can change.
489 bool force_rebuild = opacity == 1.f || opacity_ == 1.f; 491 bool force_rebuild = opacity == 1.f || opacity_ == 1.f;
490 opacity_ = opacity; 492 opacity_ = opacity;
491 SetSubtreePropertyChanged(); 493 SetSubtreePropertyChanged();
492 if (layer_tree_host_ && !force_rebuild) { 494 if (layer_tree_host_ && !force_rebuild) {
493 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 495 PropertyTrees* property_trees = layer_tree_host_->property_trees();
494 auto effect_id_to_index = property_trees->effect_id_to_index_map.find(id()); 496 auto effect_id_to_index = property_trees->effect_id_to_index_map.find(id());
495 if (effect_id_to_index != property_trees->effect_id_to_index_map.end()) { 497 if (effect_id_to_index != property_trees->effect_id_to_index_map.end()) {
496 EffectNode* node = 498 EffectNode* node =
497 property_trees->effect_tree.Node(effect_id_to_index->second); 499 property_trees->effect_tree.Node(effect_id_to_index->second);
498 node->data.opacity = opacity; 500 node->opacity = opacity;
499 node->data.effect_changed = true; 501 node->effect_changed = true;
500 property_trees->effect_tree.set_needs_update(true); 502 property_trees->effect_tree.set_needs_update(true);
501 SetNeedsCommitNoRebuild(); 503 SetNeedsCommitNoRebuild();
502 return; 504 return;
503 } 505 }
504 } 506 }
505 SetNeedsCommit(); 507 SetNeedsCommit();
506 } 508 }
507 509
508 float Layer::EffectiveOpacity() const { 510 float Layer::EffectiveOpacity() const {
509 return hide_layer_and_subtree_ ? 0.f : opacity_; 511 return hide_layer_and_subtree_ ? 0.f : opacity_;
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 return; 605 return;
604 606
605 SetSubtreePropertyChanged(); 607 SetSubtreePropertyChanged();
606 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 608 PropertyTrees* property_trees = layer_tree_host_->property_trees();
607 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 609 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM,
608 id())) { 610 id())) {
609 DCHECK_EQ(transform_tree_index(), 611 DCHECK_EQ(transform_tree_index(),
610 property_trees->transform_id_to_index_map[id()]); 612 property_trees->transform_id_to_index_map[id()]);
611 TransformNode* transform_node = 613 TransformNode* transform_node =
612 property_trees->transform_tree.Node(transform_tree_index()); 614 property_trees->transform_tree.Node(transform_tree_index());
613 transform_node->data.update_post_local_transform(position, 615 transform_node->update_post_local_transform(position, transform_origin());
614 transform_origin()); 616 transform_node->needs_local_transform_update = true;
615 transform_node->data.needs_local_transform_update = true; 617 transform_node->transform_changed = true;
616 transform_node->data.transform_changed = true;
617 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true); 618 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true);
618 SetNeedsCommitNoRebuild(); 619 SetNeedsCommitNoRebuild();
619 return; 620 return;
620 } 621 }
621 622
622 SetNeedsCommit(); 623 SetNeedsCommit();
623 } 624 }
624 625
625 bool Layer::IsContainerForFixedPositionLayers() const { 626 bool Layer::IsContainerForFixedPositionLayers() const {
626 if (!transform_.IsIdentityOrTranslation()) 627 if (!transform_.IsIdentityOrTranslation())
(...skipping 30 matching lines...) Expand all
657 id())) { 658 id())) {
658 // We need to trigger a rebuild if we could have affected 2d axis 659 // We need to trigger a rebuild if we could have affected 2d axis
659 // alignment. We'll check to see if transform and transform_ are axis 660 // alignment. We'll check to see if transform and transform_ are axis
660 // align with respect to one another. 661 // align with respect to one another.
661 DCHECK_EQ(transform_tree_index(), 662 DCHECK_EQ(transform_tree_index(),
662 property_trees->transform_id_to_index_map[id()]); 663 property_trees->transform_id_to_index_map[id()]);
663 TransformNode* transform_node = 664 TransformNode* transform_node =
664 property_trees->transform_tree.Node(transform_tree_index()); 665 property_trees->transform_tree.Node(transform_tree_index());
665 bool preserves_2d_axis_alignment = 666 bool preserves_2d_axis_alignment =
666 Are2dAxisAligned(transform_, transform); 667 Are2dAxisAligned(transform_, transform);
667 transform_node->data.local = transform; 668 transform_node->local = transform;
668 transform_node->data.needs_local_transform_update = true; 669 transform_node->needs_local_transform_update = true;
669 transform_node->data.transform_changed = true; 670 transform_node->transform_changed = true;
670 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true); 671 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true);
671 if (preserves_2d_axis_alignment) 672 if (preserves_2d_axis_alignment)
672 SetNeedsCommitNoRebuild(); 673 SetNeedsCommitNoRebuild();
673 else 674 else
674 SetNeedsCommit(); 675 SetNeedsCommit();
675 transform_ = transform; 676 transform_ = transform;
676 return; 677 return;
677 } 678 }
678 } 679 }
679 680
(...skipping 12 matching lines...) Expand all
692 return; 693 return;
693 694
694 SetSubtreePropertyChanged(); 695 SetSubtreePropertyChanged();
695 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 696 PropertyTrees* property_trees = layer_tree_host_->property_trees();
696 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 697 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM,
697 id())) { 698 id())) {
698 DCHECK_EQ(transform_tree_index(), 699 DCHECK_EQ(transform_tree_index(),
699 property_trees->transform_id_to_index_map[id()]); 700 property_trees->transform_id_to_index_map[id()]);
700 TransformNode* transform_node = 701 TransformNode* transform_node =
701 property_trees->transform_tree.Node(transform_tree_index()); 702 property_trees->transform_tree.Node(transform_tree_index());
702 transform_node->data.update_pre_local_transform(transform_origin); 703 transform_node->update_pre_local_transform(transform_origin);
703 transform_node->data.update_post_local_transform(position(), 704 transform_node->update_post_local_transform(position(), transform_origin);
704 transform_origin); 705 transform_node->needs_local_transform_update = true;
705 transform_node->data.needs_local_transform_update = true; 706 transform_node->transform_changed = true;
706 transform_node->data.transform_changed = true;
707 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true); 707 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true);
708 SetNeedsCommitNoRebuild(); 708 SetNeedsCommitNoRebuild();
709 return; 709 return;
710 } 710 }
711 711
712 SetNeedsCommit(); 712 SetNeedsCommit();
713 } 713 }
714 714
715 bool Layer::AnimationsPreserveAxisAlignment() const { 715 bool Layer::AnimationsPreserveAxisAlignment() const {
716 DCHECK(layer_tree_host_); 716 DCHECK(layer_tree_host_);
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
823 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 823 PropertyTrees* property_trees = layer_tree_host_->property_trees();
824 if (scroll_tree_index() != -1 && scrollable()) 824 if (scroll_tree_index() != -1 && scrollable())
825 property_trees->scroll_tree.SetScrollOffset(id(), scroll_offset); 825 property_trees->scroll_tree.SetScrollOffset(id(), scroll_offset);
826 826
827 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 827 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM,
828 id())) { 828 id())) {
829 DCHECK_EQ(transform_tree_index(), 829 DCHECK_EQ(transform_tree_index(),
830 property_trees->transform_id_to_index_map[id()]); 830 property_trees->transform_id_to_index_map[id()]);
831 TransformNode* transform_node = 831 TransformNode* transform_node =
832 property_trees->transform_tree.Node(transform_tree_index()); 832 property_trees->transform_tree.Node(transform_tree_index());
833 transform_node->data.scroll_offset = CurrentScrollOffset(); 833 transform_node->scroll_offset = CurrentScrollOffset();
834 transform_node->data.needs_local_transform_update = true; 834 transform_node->needs_local_transform_update = true;
835 property_trees->transform_tree.set_needs_update(true); 835 property_trees->transform_tree.set_needs_update(true);
836 SetNeedsCommitNoRebuild(); 836 SetNeedsCommitNoRebuild();
837 return; 837 return;
838 } 838 }
839 839
840 SetNeedsCommit(); 840 SetNeedsCommit();
841 } 841 }
842 842
843 void Layer::SetScrollOffsetFromImplSide( 843 void Layer::SetScrollOffsetFromImplSide(
844 const gfx::ScrollOffset& scroll_offset) { 844 const gfx::ScrollOffset& scroll_offset) {
(...skipping 11 matching lines...) Expand all
856 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 856 PropertyTrees* property_trees = layer_tree_host_->property_trees();
857 if (scroll_tree_index() != -1 && scrollable()) 857 if (scroll_tree_index() != -1 && scrollable())
858 property_trees->scroll_tree.SetScrollOffset(id(), scroll_offset); 858 property_trees->scroll_tree.SetScrollOffset(id(), scroll_offset);
859 859
860 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 860 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM,
861 id())) { 861 id())) {
862 DCHECK_EQ(transform_tree_index(), 862 DCHECK_EQ(transform_tree_index(),
863 property_trees->transform_id_to_index_map[id()]); 863 property_trees->transform_id_to_index_map[id()]);
864 TransformNode* transform_node = 864 TransformNode* transform_node =
865 property_trees->transform_tree.Node(transform_tree_index()); 865 property_trees->transform_tree.Node(transform_tree_index());
866 transform_node->data.scroll_offset = CurrentScrollOffset(); 866 transform_node->scroll_offset = CurrentScrollOffset();
867 transform_node->data.needs_local_transform_update = true; 867 transform_node->needs_local_transform_update = true;
868 property_trees->transform_tree.set_needs_update(true); 868 property_trees->transform_tree.set_needs_update(true);
869 needs_rebuild = false; 869 needs_rebuild = false;
870 } 870 }
871 871
872 if (needs_rebuild) 872 if (needs_rebuild)
873 property_trees->needs_rebuild = true; 873 property_trees->needs_rebuild = true;
874 874
875 if (!did_scroll_callback_.is_null()) 875 if (!did_scroll_callback_.is_null())
876 did_scroll_callback_.Run(); 876 did_scroll_callback_.Run();
877 // The callback could potentially change the layer structure: 877 // The callback could potentially change the layer structure:
(...skipping 766 matching lines...) Expand 10 before | Expand all | Expand 10 after
1644 // Changing the opacity may make a previously hidden layer visible, so a new 1644 // Changing the opacity may make a previously hidden layer visible, so a new
1645 // recording may be needed. 1645 // recording may be needed.
1646 SetNeedsUpdate(); 1646 SetNeedsUpdate();
1647 if (layer_tree_host_) { 1647 if (layer_tree_host_) {
1648 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 1648 PropertyTrees* property_trees = layer_tree_host_->property_trees();
1649 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, 1649 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT,
1650 id())) { 1650 id())) {
1651 DCHECK_EQ(effect_tree_index(), 1651 DCHECK_EQ(effect_tree_index(),
1652 property_trees->effect_id_to_index_map[id()]); 1652 property_trees->effect_id_to_index_map[id()]);
1653 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); 1653 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index());
1654 node->data.opacity = opacity; 1654 node->opacity = opacity;
1655 property_trees->effect_tree.set_needs_update(true); 1655 property_trees->effect_tree.set_needs_update(true);
1656 } 1656 }
1657 } 1657 }
1658 } 1658 }
1659 1659
1660 void Layer::OnTransformAnimated(const gfx::Transform& transform) { 1660 void Layer::OnTransformAnimated(const gfx::Transform& transform) {
1661 if (transform_ == transform) 1661 if (transform_ == transform)
1662 return; 1662 return;
1663 transform_ = transform; 1663 transform_ = transform;
1664 // Changing the transform may change the visible part of this layer, so a new 1664 // Changing the transform may change the visible part of this layer, so a new
1665 // recording may be needed. 1665 // recording may be needed.
1666 SetNeedsUpdate(); 1666 SetNeedsUpdate();
1667 if (layer_tree_host_) { 1667 if (layer_tree_host_) {
1668 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 1668 PropertyTrees* property_trees = layer_tree_host_->property_trees();
1669 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 1669 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM,
1670 id())) { 1670 id())) {
1671 DCHECK_EQ(transform_tree_index(), 1671 DCHECK_EQ(transform_tree_index(),
1672 property_trees->transform_id_to_index_map[id()]); 1672 property_trees->transform_id_to_index_map[id()]);
1673 TransformNode* node = 1673 TransformNode* node =
1674 property_trees->transform_tree.Node(transform_tree_index()); 1674 property_trees->transform_tree.Node(transform_tree_index());
1675 node->data.local = transform; 1675 node->local = transform;
1676 node->data.needs_local_transform_update = true; 1676 node->needs_local_transform_update = true;
1677 node->data.has_potential_animation = true; 1677 node->has_potential_animation = true;
1678 property_trees->transform_tree.set_needs_update(true); 1678 property_trees->transform_tree.set_needs_update(true);
1679 } 1679 }
1680 } 1680 }
1681 } 1681 }
1682 1682
1683 void Layer::OnScrollOffsetAnimated(const gfx::ScrollOffset& scroll_offset) { 1683 void Layer::OnScrollOffsetAnimated(const gfx::ScrollOffset& scroll_offset) {
1684 // Do nothing. Scroll deltas will be sent from the compositor thread back 1684 // Do nothing. Scroll deltas will be sent from the compositor thread back
1685 // to the main thread in the same manner as during non-animated 1685 // to the main thread in the same manner as during non-animated
1686 // compositor-driven scrolling. 1686 // compositor-driven scrolling.
1687 } 1687 }
1688 1688
1689 void Layer::OnTransformIsCurrentlyAnimatingChanged( 1689 void Layer::OnTransformIsCurrentlyAnimatingChanged(
1690 bool is_currently_animating) { 1690 bool is_currently_animating) {
1691 DCHECK(layer_tree_host_); 1691 DCHECK(layer_tree_host_);
1692 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 1692 PropertyTrees* property_trees = layer_tree_host_->property_trees();
1693 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 1693 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM,
1694 id())) 1694 id()))
1695 return; 1695 return;
1696 DCHECK_EQ(transform_tree_index(), 1696 DCHECK_EQ(transform_tree_index(),
1697 property_trees->transform_id_to_index_map[id()]); 1697 property_trees->transform_id_to_index_map[id()]);
1698 TransformNode* node = 1698 TransformNode* node =
1699 property_trees->transform_tree.Node(transform_tree_index()); 1699 property_trees->transform_tree.Node(transform_tree_index());
1700 node->data.is_currently_animating = is_currently_animating; 1700 node->is_currently_animating = is_currently_animating;
1701 } 1701 }
1702 1702
1703 void Layer::OnTransformIsPotentiallyAnimatingChanged( 1703 void Layer::OnTransformIsPotentiallyAnimatingChanged(
1704 bool has_potential_animation) { 1704 bool has_potential_animation) {
1705 if (!layer_tree_host_) 1705 if (!layer_tree_host_)
1706 return; 1706 return;
1707 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 1707 PropertyTrees* property_trees = layer_tree_host_->property_trees();
1708 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, 1708 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM,
1709 id())) 1709 id()))
1710 return; 1710 return;
1711 DCHECK_EQ(transform_tree_index(), 1711 DCHECK_EQ(transform_tree_index(),
1712 property_trees->transform_id_to_index_map[id()]); 1712 property_trees->transform_id_to_index_map[id()]);
1713 TransformNode* node = 1713 TransformNode* node =
1714 property_trees->transform_tree.Node(transform_tree_index()); 1714 property_trees->transform_tree.Node(transform_tree_index());
1715 1715
1716 node->data.has_potential_animation = has_potential_animation; 1716 node->has_potential_animation = has_potential_animation;
1717 if (has_potential_animation) { 1717 if (has_potential_animation) {
1718 node->data.has_only_translation_animations = HasOnlyTranslationTransforms(); 1718 node->has_only_translation_animations = HasOnlyTranslationTransforms();
1719 } else { 1719 } else {
1720 node->data.has_only_translation_animations = true; 1720 node->has_only_translation_animations = true;
1721 } 1721 }
1722 property_trees->transform_tree.set_needs_update(true); 1722 property_trees->transform_tree.set_needs_update(true);
1723 } 1723 }
1724 1724
1725 void Layer::OnOpacityIsCurrentlyAnimatingChanged(bool is_currently_animating) { 1725 void Layer::OnOpacityIsCurrentlyAnimatingChanged(bool is_currently_animating) {
1726 DCHECK(layer_tree_host_); 1726 DCHECK(layer_tree_host_);
1727 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 1727 PropertyTrees* property_trees = layer_tree_host_->property_trees();
1728 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) 1728 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id()))
1729 return; 1729 return;
1730 DCHECK_EQ(effect_tree_index(), property_trees->effect_id_to_index_map[id()]); 1730 DCHECK_EQ(effect_tree_index(), property_trees->effect_id_to_index_map[id()]);
1731 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); 1731 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index());
1732 node->data.is_currently_animating_opacity = is_currently_animating; 1732 node->is_currently_animating_opacity = is_currently_animating;
1733 } 1733 }
1734 1734
1735 void Layer::OnOpacityIsPotentiallyAnimatingChanged( 1735 void Layer::OnOpacityIsPotentiallyAnimatingChanged(
1736 bool has_potential_animation) { 1736 bool has_potential_animation) {
1737 DCHECK(layer_tree_host_); 1737 DCHECK(layer_tree_host_);
1738 PropertyTrees* property_trees = layer_tree_host_->property_trees(); 1738 PropertyTrees* property_trees = layer_tree_host_->property_trees();
1739 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) 1739 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id()))
1740 return; 1740 return;
1741 DCHECK_EQ(effect_tree_index(), property_trees->effect_id_to_index_map[id()]); 1741 DCHECK_EQ(effect_tree_index(), property_trees->effect_id_to_index_map[id()]);
1742 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); 1742 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index());
1743 node->data.has_potential_opacity_animation = 1743 node->has_potential_opacity_animation =
1744 has_potential_animation || OpacityCanAnimateOnImplThread(); 1744 has_potential_animation || OpacityCanAnimateOnImplThread();
1745 property_trees->effect_tree.set_needs_update(true); 1745 property_trees->effect_tree.set_needs_update(true);
1746 } 1746 }
1747 1747
1748 bool Layer::HasActiveAnimationForTesting() const { 1748 bool Layer::HasActiveAnimationForTesting() const {
1749 return layer_tree_host_ ? layer_tree_host_->HasActiveAnimationForTesting(this) 1749 return layer_tree_host_ ? layer_tree_host_->HasActiveAnimationForTesting(this)
1750 : false; 1750 : false;
1751 } 1751 }
1752 1752
1753 void Layer::SetHasWillChangeTransformHint(bool has_will_change) { 1753 void Layer::SetHasWillChangeTransformHint(bool has_will_change) {
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1840 // PushPropertiesTo() propagates layer debug info to the impl 1840 // PushPropertiesTo() propagates layer debug info to the impl
1841 // side -- otherwise this won't happen for the the layers that 1841 // side -- otherwise this won't happen for the the layers that
1842 // remain unchanged since tracing started. 1842 // remain unchanged since tracing started.
1843 SetNeedsPushProperties(); 1843 SetNeedsPushProperties();
1844 } 1844 }
1845 1845
1846 int Layer::num_copy_requests_in_target_subtree() { 1846 int Layer::num_copy_requests_in_target_subtree() {
1847 return layer_tree_host() 1847 return layer_tree_host()
1848 ->property_trees() 1848 ->property_trees()
1849 ->effect_tree.Node(effect_tree_index()) 1849 ->effect_tree.Node(effect_tree_index())
1850 ->data.num_copy_requests_in_subtree; 1850 ->num_copy_requests_in_subtree;
1851 } 1851 }
1852 1852
1853 gfx::Transform Layer::screen_space_transform() const { 1853 gfx::Transform Layer::screen_space_transform() const {
1854 DCHECK_NE(transform_tree_index_, -1); 1854 DCHECK_NE(transform_tree_index_, -1);
1855 return draw_property_utils::ScreenSpaceTransform( 1855 return draw_property_utils::ScreenSpaceTransform(
1856 this, layer_tree_host_->property_trees()->transform_tree); 1856 this, layer_tree_host_->property_trees()->transform_tree);
1857 } 1857 }
1858 1858
1859 } // namespace cc 1859 } // namespace cc
OLDNEW
« no previous file with comments | « cc/input/scroll_state_unittest.cc ('k') | cc/layers/layer_impl.cc » ('j') | ui/gfx/transform.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698