| OLD | NEW |
| 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 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 DCHECK_EQ(this, inputs_.replica_layer->parent()); | 121 DCHECK_EQ(this, inputs_.replica_layer->parent()); |
| 122 inputs_.replica_layer->RemoveFromParent(); | 122 inputs_.replica_layer->RemoveFromParent(); |
| 123 } | 123 } |
| 124 } | 124 } |
| 125 | 125 |
| 126 void Layer::SetLayerTreeHost(LayerTreeHost* host) { | 126 void Layer::SetLayerTreeHost(LayerTreeHost* host) { |
| 127 if (layer_tree_host_ == host) | 127 if (layer_tree_host_ == host) |
| 128 return; | 128 return; |
| 129 | 129 |
| 130 if (layer_tree_host_) { | 130 if (layer_tree_host_) { |
| 131 layer_tree_host_->property_trees()->RemoveIdFromIdToIndexMaps(id()); | 131 layer_tree_->property_trees()->RemoveIdFromIdToIndexMaps(id()); |
| 132 layer_tree_host_->property_trees()->needs_rebuild = true; | 132 layer_tree_->property_trees()->needs_rebuild = true; |
| 133 layer_tree_->UnregisterLayer(this); | 133 layer_tree_->UnregisterLayer(this); |
| 134 if (inputs_.element_id) { | 134 if (inputs_.element_id) { |
| 135 layer_tree_host_->animation_host()->UnregisterElement( | 135 layer_tree_->animation_host()->UnregisterElement(inputs_.element_id, |
| 136 inputs_.element_id, ElementListType::ACTIVE); | 136 ElementListType::ACTIVE); |
| 137 layer_tree_host_->RemoveFromElementMap(this); | 137 layer_tree_host_->RemoveFromElementMap(this); |
| 138 } | 138 } |
| 139 } | 139 } |
| 140 if (host) { | 140 if (host) { |
| 141 host->property_trees()->needs_rebuild = true; | 141 host->GetLayerTree()->property_trees()->needs_rebuild = true; |
| 142 host->GetLayerTree()->RegisterLayer(this); | 142 host->GetLayerTree()->RegisterLayer(this); |
| 143 if (inputs_.element_id) { | 143 if (inputs_.element_id) { |
| 144 host->AddToElementMap(this); | 144 host->AddToElementMap(this); |
| 145 host->animation_host()->RegisterElement(inputs_.element_id, | 145 host->animation_host()->RegisterElement(inputs_.element_id, |
| 146 ElementListType::ACTIVE); | 146 ElementListType::ACTIVE); |
| 147 } | 147 } |
| 148 } | 148 } |
| 149 | 149 |
| 150 layer_tree_host_ = host; | 150 layer_tree_host_ = host; |
| 151 layer_tree_ = host ? host->GetLayerTree() : nullptr; | 151 layer_tree_ = host ? host->GetLayerTree() : nullptr; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 174 void Layer::SetNeedsUpdate() { | 174 void Layer::SetNeedsUpdate() { |
| 175 if (layer_tree_host_ && !ignore_set_needs_commit_) | 175 if (layer_tree_host_ && !ignore_set_needs_commit_) |
| 176 layer_tree_host_->SetNeedsUpdateLayers(); | 176 layer_tree_host_->SetNeedsUpdateLayers(); |
| 177 } | 177 } |
| 178 | 178 |
| 179 void Layer::SetNeedsCommit() { | 179 void Layer::SetNeedsCommit() { |
| 180 if (!layer_tree_host_) | 180 if (!layer_tree_host_) |
| 181 return; | 181 return; |
| 182 | 182 |
| 183 SetNeedsPushProperties(); | 183 SetNeedsPushProperties(); |
| 184 layer_tree_host_->property_trees()->needs_rebuild = true; | 184 layer_tree_->property_trees()->needs_rebuild = true; |
| 185 | 185 |
| 186 if (ignore_set_needs_commit_) | 186 if (ignore_set_needs_commit_) |
| 187 return; | 187 return; |
| 188 | 188 |
| 189 layer_tree_host_->SetNeedsCommit(); | 189 layer_tree_host_->SetNeedsCommit(); |
| 190 } | 190 } |
| 191 | 191 |
| 192 void Layer::SetNeedsCommitNoRebuild() { | 192 void Layer::SetNeedsCommitNoRebuild() { |
| 193 if (!layer_tree_host_) | 193 if (!layer_tree_host_) |
| 194 return; | 194 return; |
| 195 | 195 |
| 196 SetNeedsPushProperties(); | 196 SetNeedsPushProperties(); |
| 197 | 197 |
| 198 if (ignore_set_needs_commit_) | 198 if (ignore_set_needs_commit_) |
| 199 return; | 199 return; |
| 200 | 200 |
| 201 layer_tree_host_->SetNeedsCommit(); | 201 layer_tree_host_->SetNeedsCommit(); |
| 202 } | 202 } |
| 203 | 203 |
| 204 void Layer::SetNeedsFullTreeSync() { | 204 void Layer::SetNeedsFullTreeSync() { |
| 205 if (!layer_tree_host_) | 205 if (!layer_tree_) |
| 206 return; | 206 return; |
| 207 | 207 |
| 208 layer_tree_host_->SetNeedsFullTreeSync(); | 208 layer_tree_->SetNeedsFullTreeSync(); |
| 209 } | 209 } |
| 210 | 210 |
| 211 void Layer::SetNextCommitWaitsForActivation() { | 211 void Layer::SetNextCommitWaitsForActivation() { |
| 212 if (!layer_tree_host_) | 212 if (!layer_tree_host_) |
| 213 return; | 213 return; |
| 214 | 214 |
| 215 layer_tree_host_->SetNextCommitWaitsForActivation(); | 215 layer_tree_host_->SetNextCommitWaitsForActivation(); |
| 216 } | 216 } |
| 217 | 217 |
| 218 void Layer::SetNeedsPushProperties() { | 218 void Layer::SetNeedsPushProperties() { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 238 | 238 |
| 239 void Layer::SetParent(Layer* layer) { | 239 void Layer::SetParent(Layer* layer) { |
| 240 DCHECK(!layer || !layer->HasAncestor(this)); | 240 DCHECK(!layer || !layer->HasAncestor(this)); |
| 241 | 241 |
| 242 parent_ = layer; | 242 parent_ = layer; |
| 243 SetLayerTreeHost(parent_ ? parent_->layer_tree_host() : nullptr); | 243 SetLayerTreeHost(parent_ ? parent_->layer_tree_host() : nullptr); |
| 244 | 244 |
| 245 if (!layer_tree_host_) | 245 if (!layer_tree_host_) |
| 246 return; | 246 return; |
| 247 | 247 |
| 248 layer_tree_host_->property_trees()->needs_rebuild = true; | 248 layer_tree_->property_trees()->needs_rebuild = true; |
| 249 } | 249 } |
| 250 | 250 |
| 251 void Layer::AddChild(scoped_refptr<Layer> child) { | 251 void Layer::AddChild(scoped_refptr<Layer> child) { |
| 252 InsertChild(child, inputs_.children.size()); | 252 InsertChild(child, inputs_.children.size()); |
| 253 } | 253 } |
| 254 | 254 |
| 255 void Layer::InsertChild(scoped_refptr<Layer> child, size_t index) { | 255 void Layer::InsertChild(scoped_refptr<Layer> child, size_t index) { |
| 256 DCHECK(IsPropertyChangeAllowed()); | 256 DCHECK(IsPropertyChangeAllowed()); |
| 257 child->RemoveFromParent(); | 257 child->RemoveFromParent(); |
| 258 AddDrawableDescendants(child->NumDescendantsThatDrawContent() + | 258 AddDrawableDescendants(child->NumDescendantsThatDrawContent() + |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 484 DCHECK_LE(opacity, 1.f); | 484 DCHECK_LE(opacity, 1.f); |
| 485 | 485 |
| 486 if (inputs_.opacity == opacity) | 486 if (inputs_.opacity == opacity) |
| 487 return; | 487 return; |
| 488 // We need to force a property tree rebuild when opacity changes from 1 to a | 488 // We need to force a property tree rebuild when opacity changes from 1 to a |
| 489 // non-1 value or vice-versa as render surfaces can change. | 489 // non-1 value or vice-versa as render surfaces can change. |
| 490 bool force_rebuild = opacity == 1.f || inputs_.opacity == 1.f; | 490 bool force_rebuild = opacity == 1.f || inputs_.opacity == 1.f; |
| 491 inputs_.opacity = opacity; | 491 inputs_.opacity = opacity; |
| 492 SetSubtreePropertyChanged(); | 492 SetSubtreePropertyChanged(); |
| 493 if (layer_tree_host_ && !force_rebuild) { | 493 if (layer_tree_host_ && !force_rebuild) { |
| 494 PropertyTrees* property_trees = layer_tree_host_->property_trees(); | 494 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 495 auto effect_id_to_index = property_trees->effect_id_to_index_map.find(id()); | 495 auto effect_id_to_index = property_trees->effect_id_to_index_map.find(id()); |
| 496 if (effect_id_to_index != property_trees->effect_id_to_index_map.end()) { | 496 if (effect_id_to_index != property_trees->effect_id_to_index_map.end()) { |
| 497 EffectNode* node = | 497 EffectNode* node = |
| 498 property_trees->effect_tree.Node(effect_id_to_index->second); | 498 property_trees->effect_tree.Node(effect_id_to_index->second); |
| 499 node->opacity = opacity; | 499 node->opacity = opacity; |
| 500 node->effect_changed = true; | 500 node->effect_changed = true; |
| 501 property_trees->effect_tree.set_needs_update(true); | 501 property_trees->effect_tree.set_needs_update(true); |
| 502 SetNeedsCommitNoRebuild(); | 502 SetNeedsCommitNoRebuild(); |
| 503 return; | 503 return; |
| 504 } | 504 } |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 588 void Layer::SetPosition(const gfx::PointF& position) { | 588 void Layer::SetPosition(const gfx::PointF& position) { |
| 589 DCHECK(IsPropertyChangeAllowed()); | 589 DCHECK(IsPropertyChangeAllowed()); |
| 590 if (inputs_.position == position) | 590 if (inputs_.position == position) |
| 591 return; | 591 return; |
| 592 inputs_.position = position; | 592 inputs_.position = position; |
| 593 | 593 |
| 594 if (!layer_tree_host_) | 594 if (!layer_tree_host_) |
| 595 return; | 595 return; |
| 596 | 596 |
| 597 SetSubtreePropertyChanged(); | 597 SetSubtreePropertyChanged(); |
| 598 PropertyTrees* property_trees = layer_tree_host_->property_trees(); | 598 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 599 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, | 599 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, |
| 600 id())) { | 600 id())) { |
| 601 DCHECK_EQ(transform_tree_index(), | 601 DCHECK_EQ(transform_tree_index(), |
| 602 property_trees->transform_id_to_index_map[id()]); | 602 property_trees->transform_id_to_index_map[id()]); |
| 603 TransformNode* transform_node = | 603 TransformNode* transform_node = |
| 604 property_trees->transform_tree.Node(transform_tree_index()); | 604 property_trees->transform_tree.Node(transform_tree_index()); |
| 605 transform_node->update_post_local_transform(position, transform_origin()); | 605 transform_node->update_post_local_transform(position, transform_origin()); |
| 606 transform_node->needs_local_transform_update = true; | 606 transform_node->needs_local_transform_update = true; |
| 607 transform_node->transform_changed = true; | 607 transform_node->transform_changed = true; |
| 608 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true); | 608 layer_tree_->property_trees()->transform_tree.set_needs_update(true); |
| 609 SetNeedsCommitNoRebuild(); | 609 SetNeedsCommitNoRebuild(); |
| 610 return; | 610 return; |
| 611 } | 611 } |
| 612 | 612 |
| 613 SetNeedsCommit(); | 613 SetNeedsCommit(); |
| 614 } | 614 } |
| 615 | 615 |
| 616 bool Layer::IsContainerForFixedPositionLayers() const { | 616 bool Layer::IsContainerForFixedPositionLayers() const { |
| 617 if (!inputs_.transform.IsIdentityOrTranslation()) | 617 if (!inputs_.transform.IsIdentityOrTranslation()) |
| 618 return true; | 618 return true; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 636 } | 636 } |
| 637 } | 637 } |
| 638 | 638 |
| 639 void Layer::SetTransform(const gfx::Transform& transform) { | 639 void Layer::SetTransform(const gfx::Transform& transform) { |
| 640 DCHECK(IsPropertyChangeAllowed()); | 640 DCHECK(IsPropertyChangeAllowed()); |
| 641 if (inputs_.transform == transform) | 641 if (inputs_.transform == transform) |
| 642 return; | 642 return; |
| 643 | 643 |
| 644 SetSubtreePropertyChanged(); | 644 SetSubtreePropertyChanged(); |
| 645 if (layer_tree_host_) { | 645 if (layer_tree_host_) { |
| 646 PropertyTrees* property_trees = layer_tree_host_->property_trees(); | 646 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 647 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, | 647 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, |
| 648 id())) { | 648 id())) { |
| 649 // We need to trigger a rebuild if we could have affected 2d axis | 649 // We need to trigger a rebuild if we could have affected 2d axis |
| 650 // alignment. We'll check to see if transform and inputs_.transform | 650 // alignment. We'll check to see if transform and inputs_.transform |
| 651 // are axis | 651 // are axis |
| 652 // align with respect to one another. | 652 // align with respect to one another. |
| 653 DCHECK_EQ(transform_tree_index(), | 653 DCHECK_EQ(transform_tree_index(), |
| 654 property_trees->transform_id_to_index_map[id()]); | 654 property_trees->transform_id_to_index_map[id()]); |
| 655 TransformNode* transform_node = | 655 TransformNode* transform_node = |
| 656 property_trees->transform_tree.Node(transform_tree_index()); | 656 property_trees->transform_tree.Node(transform_tree_index()); |
| 657 bool preserves_2d_axis_alignment = | 657 bool preserves_2d_axis_alignment = |
| 658 Are2dAxisAligned(inputs_.transform, transform); | 658 Are2dAxisAligned(inputs_.transform, transform); |
| 659 transform_node->local = transform; | 659 transform_node->local = transform; |
| 660 transform_node->needs_local_transform_update = true; | 660 transform_node->needs_local_transform_update = true; |
| 661 transform_node->transform_changed = true; | 661 transform_node->transform_changed = true; |
| 662 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true); | 662 layer_tree_->property_trees()->transform_tree.set_needs_update(true); |
| 663 if (preserves_2d_axis_alignment) | 663 if (preserves_2d_axis_alignment) |
| 664 SetNeedsCommitNoRebuild(); | 664 SetNeedsCommitNoRebuild(); |
| 665 else | 665 else |
| 666 SetNeedsCommit(); | 666 SetNeedsCommit(); |
| 667 inputs_.transform = transform; | 667 inputs_.transform = transform; |
| 668 return; | 668 return; |
| 669 } | 669 } |
| 670 } | 670 } |
| 671 | 671 |
| 672 inputs_.transform = transform; | 672 inputs_.transform = transform; |
| 673 | 673 |
| 674 SetNeedsCommit(); | 674 SetNeedsCommit(); |
| 675 } | 675 } |
| 676 | 676 |
| 677 void Layer::SetTransformOrigin(const gfx::Point3F& transform_origin) { | 677 void Layer::SetTransformOrigin(const gfx::Point3F& transform_origin) { |
| 678 DCHECK(IsPropertyChangeAllowed()); | 678 DCHECK(IsPropertyChangeAllowed()); |
| 679 if (inputs_.transform_origin == transform_origin) | 679 if (inputs_.transform_origin == transform_origin) |
| 680 return; | 680 return; |
| 681 inputs_.transform_origin = transform_origin; | 681 inputs_.transform_origin = transform_origin; |
| 682 | 682 |
| 683 if (!layer_tree_host_) | 683 if (!layer_tree_host_) |
| 684 return; | 684 return; |
| 685 | 685 |
| 686 SetSubtreePropertyChanged(); | 686 SetSubtreePropertyChanged(); |
| 687 PropertyTrees* property_trees = layer_tree_host_->property_trees(); | 687 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 688 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, | 688 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, |
| 689 id())) { | 689 id())) { |
| 690 DCHECK_EQ(transform_tree_index(), | 690 DCHECK_EQ(transform_tree_index(), |
| 691 property_trees->transform_id_to_index_map[id()]); | 691 property_trees->transform_id_to_index_map[id()]); |
| 692 TransformNode* transform_node = | 692 TransformNode* transform_node = |
| 693 property_trees->transform_tree.Node(transform_tree_index()); | 693 property_trees->transform_tree.Node(transform_tree_index()); |
| 694 transform_node->update_pre_local_transform(transform_origin); | 694 transform_node->update_pre_local_transform(transform_origin); |
| 695 transform_node->update_post_local_transform(position(), transform_origin); | 695 transform_node->update_post_local_transform(position(), transform_origin); |
| 696 transform_node->needs_local_transform_update = true; | 696 transform_node->needs_local_transform_update = true; |
| 697 transform_node->transform_changed = true; | 697 transform_node->transform_changed = true; |
| 698 layer_tree_host_->property_trees()->transform_tree.set_needs_update(true); | 698 layer_tree_->property_trees()->transform_tree.set_needs_update(true); |
| 699 SetNeedsCommitNoRebuild(); | 699 SetNeedsCommitNoRebuild(); |
| 700 return; | 700 return; |
| 701 } | 701 } |
| 702 | 702 |
| 703 SetNeedsCommit(); | 703 SetNeedsCommit(); |
| 704 } | 704 } |
| 705 | 705 |
| 706 bool Layer::ScrollOffsetAnimationWasInterrupted() const { | 706 bool Layer::ScrollOffsetAnimationWasInterrupted() const { |
| 707 return GetAnimationHost()->ScrollOffsetAnimationWasInterrupted(element_id()); | 707 return GetAnimationHost()->ScrollOffsetAnimationWasInterrupted(element_id()); |
| 708 } | 708 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 749 | 749 |
| 750 if (inputs_.clip_parent) | 750 if (inputs_.clip_parent) |
| 751 inputs_.clip_parent->RemoveClipChild(this); | 751 inputs_.clip_parent->RemoveClipChild(this); |
| 752 | 752 |
| 753 inputs_.clip_parent = ancestor; | 753 inputs_.clip_parent = ancestor; |
| 754 | 754 |
| 755 if (inputs_.clip_parent) | 755 if (inputs_.clip_parent) |
| 756 inputs_.clip_parent->AddClipChild(this); | 756 inputs_.clip_parent->AddClipChild(this); |
| 757 | 757 |
| 758 SetNeedsCommit(); | 758 SetNeedsCommit(); |
| 759 if (layer_tree_host_) | 759 if (layer_tree_) |
| 760 layer_tree_host_->SetNeedsMetaInfoRecomputation(true); | 760 layer_tree_->SetNeedsMetaInfoRecomputation(true); |
| 761 } | 761 } |
| 762 | 762 |
| 763 void Layer::AddClipChild(Layer* child) { | 763 void Layer::AddClipChild(Layer* child) { |
| 764 if (!clip_children_) | 764 if (!clip_children_) |
| 765 clip_children_.reset(new std::set<Layer*>); | 765 clip_children_.reset(new std::set<Layer*>); |
| 766 clip_children_->insert(child); | 766 clip_children_->insert(child); |
| 767 SetNeedsCommit(); | 767 SetNeedsCommit(); |
| 768 } | 768 } |
| 769 | 769 |
| 770 void Layer::RemoveClipChild(Layer* child) { | 770 void Layer::RemoveClipChild(Layer* child) { |
| 771 clip_children_->erase(child); | 771 clip_children_->erase(child); |
| 772 if (clip_children_->empty()) | 772 if (clip_children_->empty()) |
| 773 clip_children_ = nullptr; | 773 clip_children_ = nullptr; |
| 774 SetNeedsCommit(); | 774 SetNeedsCommit(); |
| 775 } | 775 } |
| 776 | 776 |
| 777 void Layer::SetScrollOffset(const gfx::ScrollOffset& scroll_offset) { | 777 void Layer::SetScrollOffset(const gfx::ScrollOffset& scroll_offset) { |
| 778 DCHECK(IsPropertyChangeAllowed()); | 778 DCHECK(IsPropertyChangeAllowed()); |
| 779 | 779 |
| 780 if (inputs_.scroll_offset == scroll_offset) | 780 if (inputs_.scroll_offset == scroll_offset) |
| 781 return; | 781 return; |
| 782 inputs_.scroll_offset = scroll_offset; | 782 inputs_.scroll_offset = scroll_offset; |
| 783 | 783 |
| 784 if (!layer_tree_host_) | 784 if (!layer_tree_host_) |
| 785 return; | 785 return; |
| 786 | 786 |
| 787 PropertyTrees* property_trees = layer_tree_host_->property_trees(); | 787 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 788 if (scroll_tree_index() != ScrollTree::kInvalidNodeId && scrollable()) | 788 if (scroll_tree_index() != ScrollTree::kInvalidNodeId && scrollable()) |
| 789 property_trees->scroll_tree.SetScrollOffset(id(), scroll_offset); | 789 property_trees->scroll_tree.SetScrollOffset(id(), scroll_offset); |
| 790 | 790 |
| 791 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, | 791 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, |
| 792 id())) { | 792 id())) { |
| 793 DCHECK_EQ(transform_tree_index(), | 793 DCHECK_EQ(transform_tree_index(), |
| 794 property_trees->transform_id_to_index_map[id()]); | 794 property_trees->transform_id_to_index_map[id()]); |
| 795 TransformNode* transform_node = | 795 TransformNode* transform_node = |
| 796 property_trees->transform_tree.Node(transform_tree_index()); | 796 property_trees->transform_tree.Node(transform_tree_index()); |
| 797 transform_node->scroll_offset = CurrentScrollOffset(); | 797 transform_node->scroll_offset = CurrentScrollOffset(); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 810 // This function only gets called during a BeginMainFrame, so there | 810 // This function only gets called during a BeginMainFrame, so there |
| 811 // is no need to call SetNeedsUpdate here. | 811 // is no need to call SetNeedsUpdate here. |
| 812 DCHECK(layer_tree_host_ && layer_tree_host_->CommitRequested()); | 812 DCHECK(layer_tree_host_ && layer_tree_host_->CommitRequested()); |
| 813 if (inputs_.scroll_offset == scroll_offset) | 813 if (inputs_.scroll_offset == scroll_offset) |
| 814 return; | 814 return; |
| 815 inputs_.scroll_offset = scroll_offset; | 815 inputs_.scroll_offset = scroll_offset; |
| 816 SetNeedsPushProperties(); | 816 SetNeedsPushProperties(); |
| 817 | 817 |
| 818 bool needs_rebuild = true; | 818 bool needs_rebuild = true; |
| 819 | 819 |
| 820 PropertyTrees* property_trees = layer_tree_host_->property_trees(); | 820 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 821 if (scroll_tree_index() != ScrollTree::kInvalidNodeId && scrollable()) | 821 if (scroll_tree_index() != ScrollTree::kInvalidNodeId && scrollable()) |
| 822 property_trees->scroll_tree.SetScrollOffset(id(), scroll_offset); | 822 property_trees->scroll_tree.SetScrollOffset(id(), scroll_offset); |
| 823 | 823 |
| 824 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, | 824 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, |
| 825 id())) { | 825 id())) { |
| 826 DCHECK_EQ(transform_tree_index(), | 826 DCHECK_EQ(transform_tree_index(), |
| 827 property_trees->transform_id_to_index_map[id()]); | 827 property_trees->transform_id_to_index_map[id()]); |
| 828 TransformNode* transform_node = | 828 TransformNode* transform_node = |
| 829 property_trees->transform_tree.Node(transform_tree_index()); | 829 property_trees->transform_tree.Node(transform_tree_index()); |
| 830 transform_node->scroll_offset = CurrentScrollOffset(); | 830 transform_node->scroll_offset = CurrentScrollOffset(); |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 936 void Layer::SetTransformTreeIndex(int index) { | 936 void Layer::SetTransformTreeIndex(int index) { |
| 937 DCHECK(IsPropertyChangeAllowed()); | 937 DCHECK(IsPropertyChangeAllowed()); |
| 938 if (transform_tree_index_ == index) | 938 if (transform_tree_index_ == index) |
| 939 return; | 939 return; |
| 940 transform_tree_index_ = index; | 940 transform_tree_index_ = index; |
| 941 SetNeedsPushProperties(); | 941 SetNeedsPushProperties(); |
| 942 } | 942 } |
| 943 | 943 |
| 944 int Layer::transform_tree_index() const { | 944 int Layer::transform_tree_index() const { |
| 945 if (!layer_tree_host_ || | 945 if (!layer_tree_host_ || |
| 946 layer_tree_host_->property_trees()->sequence_number != | 946 layer_tree_->property_trees()->sequence_number != |
| 947 property_tree_sequence_number_) { | 947 property_tree_sequence_number_) { |
| 948 return TransformTree::kInvalidNodeId; | 948 return TransformTree::kInvalidNodeId; |
| 949 } | 949 } |
| 950 return transform_tree_index_; | 950 return transform_tree_index_; |
| 951 } | 951 } |
| 952 | 952 |
| 953 void Layer::SetClipTreeIndex(int index) { | 953 void Layer::SetClipTreeIndex(int index) { |
| 954 DCHECK(IsPropertyChangeAllowed()); | 954 DCHECK(IsPropertyChangeAllowed()); |
| 955 if (clip_tree_index_ == index) | 955 if (clip_tree_index_ == index) |
| 956 return; | 956 return; |
| 957 clip_tree_index_ = index; | 957 clip_tree_index_ = index; |
| 958 SetNeedsPushProperties(); | 958 SetNeedsPushProperties(); |
| 959 } | 959 } |
| 960 | 960 |
| 961 int Layer::clip_tree_index() const { | 961 int Layer::clip_tree_index() const { |
| 962 if (!layer_tree_host_ || | 962 if (!layer_tree_host_ || |
| 963 layer_tree_host_->property_trees()->sequence_number != | 963 layer_tree_->property_trees()->sequence_number != |
| 964 property_tree_sequence_number_) { | 964 property_tree_sequence_number_) { |
| 965 return ClipTree::kInvalidNodeId; | 965 return ClipTree::kInvalidNodeId; |
| 966 } | 966 } |
| 967 return clip_tree_index_; | 967 return clip_tree_index_; |
| 968 } | 968 } |
| 969 | 969 |
| 970 void Layer::SetEffectTreeIndex(int index) { | 970 void Layer::SetEffectTreeIndex(int index) { |
| 971 DCHECK(IsPropertyChangeAllowed()); | 971 DCHECK(IsPropertyChangeAllowed()); |
| 972 if (effect_tree_index_ == index) | 972 if (effect_tree_index_ == index) |
| 973 return; | 973 return; |
| 974 effect_tree_index_ = index; | 974 effect_tree_index_ = index; |
| 975 SetNeedsPushProperties(); | 975 SetNeedsPushProperties(); |
| 976 } | 976 } |
| 977 | 977 |
| 978 int Layer::effect_tree_index() const { | 978 int Layer::effect_tree_index() const { |
| 979 if (!layer_tree_host_ || | 979 if (!layer_tree_host_ || |
| 980 layer_tree_host_->property_trees()->sequence_number != | 980 layer_tree_->property_trees()->sequence_number != |
| 981 property_tree_sequence_number_) { | 981 property_tree_sequence_number_) { |
| 982 return EffectTree::kInvalidNodeId; | 982 return EffectTree::kInvalidNodeId; |
| 983 } | 983 } |
| 984 return effect_tree_index_; | 984 return effect_tree_index_; |
| 985 } | 985 } |
| 986 | 986 |
| 987 int Layer::render_target_effect_tree_index() const { | 987 int Layer::render_target_effect_tree_index() const { |
| 988 EffectNode* effect_node = | 988 EffectNode* effect_node = |
| 989 layer_tree_host_->property_trees()->effect_tree.Node(effect_tree_index_); | 989 layer_tree_->property_trees()->effect_tree.Node(effect_tree_index_); |
| 990 if (effect_node->has_render_surface) | 990 if (effect_node->has_render_surface) |
| 991 return effect_node->id; | 991 return effect_node->id; |
| 992 else | 992 else |
| 993 return effect_node->target_id; | 993 return effect_node->target_id; |
| 994 } | 994 } |
| 995 | 995 |
| 996 void Layer::SetScrollTreeIndex(int index) { | 996 void Layer::SetScrollTreeIndex(int index) { |
| 997 DCHECK(IsPropertyChangeAllowed()); | 997 DCHECK(IsPropertyChangeAllowed()); |
| 998 if (scroll_tree_index_ == index) | 998 if (scroll_tree_index_ == index) |
| 999 return; | 999 return; |
| 1000 scroll_tree_index_ = index; | 1000 scroll_tree_index_ = index; |
| 1001 SetNeedsPushProperties(); | 1001 SetNeedsPushProperties(); |
| 1002 } | 1002 } |
| 1003 | 1003 |
| 1004 int Layer::scroll_tree_index() const { | 1004 int Layer::scroll_tree_index() const { |
| 1005 if (!layer_tree_host_ || | 1005 if (!layer_tree_host_ || |
| 1006 layer_tree_host_->property_trees()->sequence_number != | 1006 layer_tree_->property_trees()->sequence_number != |
| 1007 property_tree_sequence_number_) { | 1007 property_tree_sequence_number_) { |
| 1008 return ScrollTree::kInvalidNodeId; | 1008 return ScrollTree::kInvalidNodeId; |
| 1009 } | 1009 } |
| 1010 return scroll_tree_index_; | 1010 return scroll_tree_index_; |
| 1011 } | 1011 } |
| 1012 | 1012 |
| 1013 void Layer::InvalidatePropertyTreesIndices() { | 1013 void Layer::InvalidatePropertyTreesIndices() { |
| 1014 SetTransformTreeIndex(TransformTree::kInvalidNodeId); | 1014 SetTransformTreeIndex(TransformTree::kInvalidNodeId); |
| 1015 SetClipTreeIndex(ClipTree::kInvalidNodeId); | 1015 SetClipTreeIndex(ClipTree::kInvalidNodeId); |
| 1016 SetEffectTreeIndex(EffectTree::kInvalidNodeId); | 1016 SetEffectTreeIndex(EffectTree::kInvalidNodeId); |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1178 layer->set_user_scrollable_horizontal(inputs_.user_scrollable_horizontal); | 1178 layer->set_user_scrollable_horizontal(inputs_.user_scrollable_horizontal); |
| 1179 layer->set_user_scrollable_vertical(inputs_.user_scrollable_vertical); | 1179 layer->set_user_scrollable_vertical(inputs_.user_scrollable_vertical); |
| 1180 layer->SetElementId(inputs_.element_id); | 1180 layer->SetElementId(inputs_.element_id); |
| 1181 layer->SetMutableProperties(inputs_.mutable_properties); | 1181 layer->SetMutableProperties(inputs_.mutable_properties); |
| 1182 | 1182 |
| 1183 // When a scroll offset animation is interrupted the new scroll position on | 1183 // When a scroll offset animation is interrupted the new scroll position on |
| 1184 // the pending tree will clobber any impl-side scrolling occuring on the | 1184 // the pending tree will clobber any impl-side scrolling occuring on the |
| 1185 // active tree. To do so, avoid scrolling the pending tree along with it | 1185 // active tree. To do so, avoid scrolling the pending tree along with it |
| 1186 // instead of trying to undo that scrolling later. | 1186 // instead of trying to undo that scrolling later. |
| 1187 if (ScrollOffsetAnimationWasInterrupted()) | 1187 if (ScrollOffsetAnimationWasInterrupted()) |
| 1188 layer_tree_host() | 1188 layer_tree_->property_trees() |
| 1189 ->property_trees() | |
| 1190 ->scroll_tree.SetScrollOffsetClobberActiveValue(layer->id()); | 1189 ->scroll_tree.SetScrollOffsetClobberActiveValue(layer->id()); |
| 1191 | 1190 |
| 1192 // If the main thread commits multiple times before the impl thread actually | 1191 // If the main thread commits multiple times before the impl thread actually |
| 1193 // draws, then damage tracking will become incorrect if we simply clobber the | 1192 // draws, then damage tracking will become incorrect if we simply clobber the |
| 1194 // update_rect here. The LayerImpl's update_rect needs to accumulate (i.e. | 1193 // update_rect here. The LayerImpl's update_rect needs to accumulate (i.e. |
| 1195 // union) any update changes that have occurred on the main thread. | 1194 // union) any update changes that have occurred on the main thread. |
| 1196 inputs_.update_rect.Union(layer->update_rect()); | 1195 inputs_.update_rect.Union(layer->update_rect()); |
| 1197 layer->SetUpdateRect(inputs_.update_rect); | 1196 layer->SetUpdateRect(inputs_.update_rect); |
| 1198 | 1197 |
| 1199 layer->SetHasWillChangeTransformHint(has_will_change_transform_hint()); | 1198 layer->SetHasWillChangeTransformHint(has_will_change_transform_hint()); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1289 DCHECK(!layer_tree_host_); | 1288 DCHECK(!layer_tree_host_); |
| 1290 DCHECK(inputs_.children.empty()); | 1289 DCHECK(inputs_.children.empty()); |
| 1291 DCHECK(!inputs_.mask_layer); | 1290 DCHECK(!inputs_.mask_layer); |
| 1292 DCHECK(!inputs_.replica_layer); | 1291 DCHECK(!inputs_.replica_layer); |
| 1293 DCHECK(layer_tree_host); | 1292 DCHECK(layer_tree_host); |
| 1294 DCHECK(proto.has_id()); | 1293 DCHECK(proto.has_id()); |
| 1295 | 1294 |
| 1296 inputs_.layer_id = proto.id(); | 1295 inputs_.layer_id = proto.id(); |
| 1297 | 1296 |
| 1298 layer_tree_host_ = layer_tree_host; | 1297 layer_tree_host_ = layer_tree_host; |
| 1299 layer_tree_ = layer_tree_host ? layer_tree_host->GetLayerTree() : nullptr; | 1298 layer_tree_ = layer_tree_host->GetLayerTree(); |
| 1300 layer_tree_->RegisterLayer(this); | 1299 layer_tree_->RegisterLayer(this); |
| 1301 | 1300 |
| 1302 for (int i = 0; i < proto.children_size(); ++i) { | 1301 for (int i = 0; i < proto.children_size(); ++i) { |
| 1303 const proto::LayerNode& child_proto = proto.children(i); | 1302 const proto::LayerNode& child_proto = proto.children(i); |
| 1304 DCHECK(child_proto.has_type()); | 1303 DCHECK(child_proto.has_type()); |
| 1305 scoped_refptr<Layer> child = | 1304 scoped_refptr<Layer> child = |
| 1306 LayerProtoConverter::FindOrAllocateAndConstruct(child_proto, layer_map); | 1305 LayerProtoConverter::FindOrAllocateAndConstruct(child_proto, layer_map); |
| 1307 // The child must now refer to this layer as its parent, and must also have | 1306 // The child must now refer to this layer as its parent, and must also have |
| 1308 // the same LayerTreeHost. This must be done before deserializing children. | 1307 // the same LayerTreeHost. This must be done before deserializing children. |
| 1309 DCHECK(!child->parent_); | 1308 DCHECK(!child->parent_); |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1638 DCHECK_GE(opacity, 0.f); | 1637 DCHECK_GE(opacity, 0.f); |
| 1639 DCHECK_LE(opacity, 1.f); | 1638 DCHECK_LE(opacity, 1.f); |
| 1640 | 1639 |
| 1641 if (inputs_.opacity == opacity) | 1640 if (inputs_.opacity == opacity) |
| 1642 return; | 1641 return; |
| 1643 inputs_.opacity = opacity; | 1642 inputs_.opacity = opacity; |
| 1644 // Changing the opacity may make a previously hidden layer visible, so a new | 1643 // Changing the opacity may make a previously hidden layer visible, so a new |
| 1645 // recording may be needed. | 1644 // recording may be needed. |
| 1646 SetNeedsUpdate(); | 1645 SetNeedsUpdate(); |
| 1647 if (layer_tree_host_) { | 1646 if (layer_tree_host_) { |
| 1648 PropertyTrees* property_trees = layer_tree_host_->property_trees(); | 1647 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 1649 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, | 1648 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, |
| 1650 id())) { | 1649 id())) { |
| 1651 DCHECK_EQ(effect_tree_index(), | 1650 DCHECK_EQ(effect_tree_index(), |
| 1652 property_trees->effect_id_to_index_map[id()]); | 1651 property_trees->effect_id_to_index_map[id()]); |
| 1653 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); | 1652 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); |
| 1654 node->opacity = opacity; | 1653 node->opacity = opacity; |
| 1655 property_trees->effect_tree.set_needs_update(true); | 1654 property_trees->effect_tree.set_needs_update(true); |
| 1656 } | 1655 } |
| 1657 } | 1656 } |
| 1658 } | 1657 } |
| 1659 | 1658 |
| 1660 void Layer::OnTransformAnimated(const gfx::Transform& transform) { | 1659 void Layer::OnTransformAnimated(const gfx::Transform& transform) { |
| 1661 if (inputs_.transform == transform) | 1660 if (inputs_.transform == transform) |
| 1662 return; | 1661 return; |
| 1663 inputs_.transform = transform; | 1662 inputs_.transform = transform; |
| 1664 // Changing the transform may change the visible part of this layer, so a new | 1663 // Changing the transform may change the visible part of this layer, so a new |
| 1665 // recording may be needed. | 1664 // recording may be needed. |
| 1666 SetNeedsUpdate(); | 1665 SetNeedsUpdate(); |
| 1667 if (layer_tree_host_) { | 1666 if (layer_tree_host_) { |
| 1668 PropertyTrees* property_trees = layer_tree_host_->property_trees(); | 1667 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 1669 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, | 1668 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, |
| 1670 id())) { | 1669 id())) { |
| 1671 DCHECK_EQ(transform_tree_index(), | 1670 DCHECK_EQ(transform_tree_index(), |
| 1672 property_trees->transform_id_to_index_map[id()]); | 1671 property_trees->transform_id_to_index_map[id()]); |
| 1673 TransformNode* node = | 1672 TransformNode* node = |
| 1674 property_trees->transform_tree.Node(transform_tree_index()); | 1673 property_trees->transform_tree.Node(transform_tree_index()); |
| 1675 node->local = transform; | 1674 node->local = transform; |
| 1676 node->needs_local_transform_update = true; | 1675 node->needs_local_transform_update = true; |
| 1677 node->has_potential_animation = true; | 1676 node->has_potential_animation = true; |
| 1678 property_trees->transform_tree.set_needs_update(true); | 1677 property_trees->transform_tree.set_needs_update(true); |
| 1679 } | 1678 } |
| 1680 } | 1679 } |
| 1681 } | 1680 } |
| 1682 | 1681 |
| 1683 void Layer::OnScrollOffsetAnimated(const gfx::ScrollOffset& scroll_offset) { | 1682 void Layer::OnScrollOffsetAnimated(const gfx::ScrollOffset& scroll_offset) { |
| 1684 // Do nothing. Scroll deltas will be sent from the compositor thread back | 1683 // 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 | 1684 // to the main thread in the same manner as during non-animated |
| 1686 // compositor-driven scrolling. | 1685 // compositor-driven scrolling. |
| 1687 } | 1686 } |
| 1688 | 1687 |
| 1689 void Layer::OnTransformIsCurrentlyAnimatingChanged( | 1688 void Layer::OnTransformIsCurrentlyAnimatingChanged( |
| 1690 bool is_currently_animating) { | 1689 bool is_currently_animating) { |
| 1691 DCHECK(layer_tree_host_); | 1690 DCHECK(layer_tree_host_); |
| 1692 PropertyTrees* property_trees = layer_tree_host_->property_trees(); | 1691 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 1693 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, | 1692 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, |
| 1694 id())) | 1693 id())) |
| 1695 return; | 1694 return; |
| 1696 DCHECK_EQ(transform_tree_index(), | 1695 DCHECK_EQ(transform_tree_index(), |
| 1697 property_trees->transform_id_to_index_map[id()]); | 1696 property_trees->transform_id_to_index_map[id()]); |
| 1698 TransformNode* node = | 1697 TransformNode* node = |
| 1699 property_trees->transform_tree.Node(transform_tree_index()); | 1698 property_trees->transform_tree.Node(transform_tree_index()); |
| 1700 node->is_currently_animating = is_currently_animating; | 1699 node->is_currently_animating = is_currently_animating; |
| 1701 } | 1700 } |
| 1702 | 1701 |
| 1703 void Layer::OnTransformIsPotentiallyAnimatingChanged( | 1702 void Layer::OnTransformIsPotentiallyAnimatingChanged( |
| 1704 bool has_potential_animation) { | 1703 bool has_potential_animation) { |
| 1705 if (!layer_tree_host_) | 1704 if (!layer_tree_host_) |
| 1706 return; | 1705 return; |
| 1707 PropertyTrees* property_trees = layer_tree_host_->property_trees(); | 1706 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 1708 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, | 1707 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, |
| 1709 id())) | 1708 id())) |
| 1710 return; | 1709 return; |
| 1711 DCHECK_EQ(transform_tree_index(), | 1710 DCHECK_EQ(transform_tree_index(), |
| 1712 property_trees->transform_id_to_index_map[id()]); | 1711 property_trees->transform_id_to_index_map[id()]); |
| 1713 TransformNode* node = | 1712 TransformNode* node = |
| 1714 property_trees->transform_tree.Node(transform_tree_index()); | 1713 property_trees->transform_tree.Node(transform_tree_index()); |
| 1715 | 1714 |
| 1716 node->has_potential_animation = has_potential_animation; | 1715 node->has_potential_animation = has_potential_animation; |
| 1717 if (has_potential_animation) { | 1716 if (has_potential_animation) { |
| 1718 node->has_only_translation_animations = HasOnlyTranslationTransforms(); | 1717 node->has_only_translation_animations = HasOnlyTranslationTransforms(); |
| 1719 } else { | 1718 } else { |
| 1720 node->has_only_translation_animations = true; | 1719 node->has_only_translation_animations = true; |
| 1721 } | 1720 } |
| 1722 property_trees->transform_tree.set_needs_update(true); | 1721 property_trees->transform_tree.set_needs_update(true); |
| 1723 } | 1722 } |
| 1724 | 1723 |
| 1725 void Layer::OnOpacityIsCurrentlyAnimatingChanged(bool is_currently_animating) { | 1724 void Layer::OnOpacityIsCurrentlyAnimatingChanged(bool is_currently_animating) { |
| 1726 DCHECK(layer_tree_host_); | 1725 DCHECK(layer_tree_host_); |
| 1727 PropertyTrees* property_trees = layer_tree_host_->property_trees(); | 1726 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 1728 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) | 1727 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) |
| 1729 return; | 1728 return; |
| 1730 DCHECK_EQ(effect_tree_index(), property_trees->effect_id_to_index_map[id()]); | 1729 DCHECK_EQ(effect_tree_index(), property_trees->effect_id_to_index_map[id()]); |
| 1731 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); | 1730 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); |
| 1732 node->is_currently_animating_opacity = is_currently_animating; | 1731 node->is_currently_animating_opacity = is_currently_animating; |
| 1733 } | 1732 } |
| 1734 | 1733 |
| 1735 void Layer::OnOpacityIsPotentiallyAnimatingChanged( | 1734 void Layer::OnOpacityIsPotentiallyAnimatingChanged( |
| 1736 bool has_potential_animation) { | 1735 bool has_potential_animation) { |
| 1737 DCHECK(layer_tree_host_); | 1736 DCHECK(layer_tree_host_); |
| 1738 PropertyTrees* property_trees = layer_tree_host_->property_trees(); | 1737 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 1739 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) | 1738 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) |
| 1740 return; | 1739 return; |
| 1741 DCHECK_EQ(effect_tree_index(), property_trees->effect_id_to_index_map[id()]); | 1740 DCHECK_EQ(effect_tree_index(), property_trees->effect_id_to_index_map[id()]); |
| 1742 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); | 1741 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); |
| 1743 node->has_potential_opacity_animation = | 1742 node->has_potential_opacity_animation = |
| 1744 has_potential_animation || OpacityCanAnimateOnImplThread(); | 1743 has_potential_animation || OpacityCanAnimateOnImplThread(); |
| 1745 property_trees->effect_tree.set_needs_update(true); | 1744 property_trees->effect_tree.set_needs_update(true); |
| 1746 } | 1745 } |
| 1747 | 1746 |
| 1748 void Layer::OnFilterIsCurrentlyAnimatingChanged(bool is_currently_animating) { | 1747 void Layer::OnFilterIsCurrentlyAnimatingChanged(bool is_currently_animating) { |
| 1749 DCHECK(layer_tree_host_); | 1748 DCHECK(layer_tree_host_); |
| 1750 PropertyTrees* property_trees = layer_tree_host_->property_trees(); | 1749 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 1751 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) | 1750 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) |
| 1752 return; | 1751 return; |
| 1753 DCHECK_EQ(effect_tree_index(), property_trees->effect_id_to_index_map[id()]); | 1752 DCHECK_EQ(effect_tree_index(), property_trees->effect_id_to_index_map[id()]); |
| 1754 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); | 1753 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); |
| 1755 node->is_currently_animating_filter = is_currently_animating; | 1754 node->is_currently_animating_filter = is_currently_animating; |
| 1756 } | 1755 } |
| 1757 | 1756 |
| 1758 void Layer::OnFilterIsPotentiallyAnimatingChanged( | 1757 void Layer::OnFilterIsPotentiallyAnimatingChanged( |
| 1759 bool has_potential_animation) { | 1758 bool has_potential_animation) { |
| 1760 DCHECK(layer_tree_host_); | 1759 DCHECK(layer_tree_host_); |
| 1761 PropertyTrees* property_trees = layer_tree_host_->property_trees(); | 1760 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 1762 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) | 1761 if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) |
| 1763 return; | 1762 return; |
| 1764 DCHECK_EQ(effect_tree_index(), property_trees->effect_id_to_index_map[id()]); | 1763 DCHECK_EQ(effect_tree_index(), property_trees->effect_id_to_index_map[id()]); |
| 1765 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); | 1764 EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); |
| 1766 node->has_potential_filter_animation = has_potential_animation; | 1765 node->has_potential_filter_animation = has_potential_animation; |
| 1767 } | 1766 } |
| 1768 | 1767 |
| 1769 bool Layer::HasActiveAnimationForTesting() const { | 1768 bool Layer::HasActiveAnimationForTesting() const { |
| 1770 return layer_tree_host_ | 1769 return layer_tree_host_ |
| 1771 ? GetAnimationHost()->HasActiveAnimationForTesting(element_id()) | 1770 ? GetAnimationHost()->HasActiveAnimationForTesting(element_id()) |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1863 | 1862 |
| 1864 void Layer::DidBeginTracing() { | 1863 void Layer::DidBeginTracing() { |
| 1865 // We'll be dumping layer trees as part of trace, so make sure | 1864 // We'll be dumping layer trees as part of trace, so make sure |
| 1866 // PushPropertiesTo() propagates layer debug info to the impl | 1865 // PushPropertiesTo() propagates layer debug info to the impl |
| 1867 // side -- otherwise this won't happen for the the layers that | 1866 // side -- otherwise this won't happen for the the layers that |
| 1868 // remain unchanged since tracing started. | 1867 // remain unchanged since tracing started. |
| 1869 SetNeedsPushProperties(); | 1868 SetNeedsPushProperties(); |
| 1870 } | 1869 } |
| 1871 | 1870 |
| 1872 int Layer::num_copy_requests_in_target_subtree() { | 1871 int Layer::num_copy_requests_in_target_subtree() { |
| 1873 return layer_tree_host() | 1872 return layer_tree_->property_trees() |
| 1874 ->property_trees() | |
| 1875 ->effect_tree.Node(effect_tree_index()) | 1873 ->effect_tree.Node(effect_tree_index()) |
| 1876 ->num_copy_requests_in_subtree; | 1874 ->num_copy_requests_in_subtree; |
| 1877 } | 1875 } |
| 1878 | 1876 |
| 1879 gfx::Transform Layer::screen_space_transform() const { | 1877 gfx::Transform Layer::screen_space_transform() const { |
| 1880 DCHECK_NE(transform_tree_index_, TransformTree::kInvalidNodeId); | 1878 DCHECK_NE(transform_tree_index_, TransformTree::kInvalidNodeId); |
| 1881 return draw_property_utils::ScreenSpaceTransform( | 1879 return draw_property_utils::ScreenSpaceTransform( |
| 1882 this, layer_tree_host_->property_trees()->transform_tree); | 1880 this, layer_tree_->property_trees()->transform_tree); |
| 1883 } | 1881 } |
| 1884 | 1882 |
| 1885 LayerTree* Layer::GetLayerTree() const { | 1883 LayerTree* Layer::GetLayerTree() const { |
| 1886 return layer_tree_; | 1884 return layer_tree_; |
| 1887 } | 1885 } |
| 1888 | 1886 |
| 1889 } // namespace cc | 1887 } // namespace cc |
| OLD | NEW |