OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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_impl.h" | 5 #include "cc/layers/layer_impl.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 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 render_surface_->ResetPropertyChangedFlag(); | 492 render_surface_->ResetPropertyChangedFlag(); |
493 } | 493 } |
494 | 494 |
495 int LayerImpl::num_copy_requests_in_target_subtree() { | 495 int LayerImpl::num_copy_requests_in_target_subtree() { |
496 return layer_tree_impl() | 496 return layer_tree_impl() |
497 ->property_trees() | 497 ->property_trees() |
498 ->effect_tree.Node(effect_tree_index()) | 498 ->effect_tree.Node(effect_tree_index()) |
499 ->num_copy_requests_in_subtree; | 499 ->num_copy_requests_in_subtree; |
500 } | 500 } |
501 | 501 |
502 void LayerImpl::UpdatePropertyTreeTransform(const gfx::Transform& transform) { | |
503 PropertyTrees* property_trees = layer_tree_impl()->property_trees(); | |
504 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, | |
505 id())) { | |
506 // A LayerImpl's own current state is insufficient for determining whether | |
507 // it owns a TransformNode, since this depends on the state of the | |
508 // corresponding Layer at the time of the last commit. For example, a | |
509 // transform animation might have been in progress at the time the last | |
510 // commit started, but might have finished since then on the compositor | |
511 // thread. | |
512 TransformNode* node = property_trees->transform_tree.Node( | |
513 property_trees->transform_id_to_index_map[id()]); | |
514 if (node->local != transform) { | |
515 node->local = transform; | |
516 node->needs_local_transform_update = true; | |
517 node->transform_changed = true; | |
518 property_trees->changed = true; | |
519 property_trees->transform_tree.set_needs_update(true); | |
520 layer_tree_impl()->set_needs_update_draw_properties(); | |
521 // TODO(ajuma): The current criteria for creating clip nodes means that | |
522 // property trees may need to be rebuilt when the new transform isn't | |
523 // axis-aligned wrt the old transform (see Layer::SetTransform). Since | |
524 // rebuilding property trees every frame of a transform animation is | |
525 // something we should try to avoid, change property tree-building so that | |
526 // it doesn't depend on axis aliginment. | |
527 } | |
528 } | |
529 } | |
530 | |
531 void LayerImpl::UpdatePropertyTreeTransformIsAnimated(bool is_animated) { | 502 void LayerImpl::UpdatePropertyTreeTransformIsAnimated(bool is_animated) { |
532 PropertyTrees* property_trees = layer_tree_impl()->property_trees(); | 503 PropertyTrees* property_trees = layer_tree_impl()->property_trees(); |
533 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, | 504 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, |
534 id())) { | 505 id())) { |
535 TransformNode* node = property_trees->transform_tree.Node( | 506 TransformNode* node = property_trees->transform_tree.Node( |
536 property_trees->transform_id_to_index_map[id()]); | 507 property_trees->transform_id_to_index_map[id()]); |
537 // A LayerImpl's own current state is insufficient for determining whether | 508 // A LayerImpl's own current state is insufficient for determining whether |
538 // it owns a TransformNode, since this depends on the state of the | 509 // it owns a TransformNode, since this depends on the state of the |
539 // corresponding Layer at the time of the last commit. For example, if | 510 // corresponding Layer at the time of the last commit. For example, if |
540 // |is_animated| is false, this might mean a transform animation just ticked | 511 // |is_animated| is false, this might mean a transform animation just ticked |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
605 SetNeedsPushProperties(); | 576 SetNeedsPushProperties(); |
606 layer_tree_impl()->set_needs_update_draw_properties(); | 577 layer_tree_impl()->set_needs_update_draw_properties(); |
607 } | 578 } |
608 | 579 |
609 void LayerImpl::OnOpacityAnimated(float opacity) { | 580 void LayerImpl::OnOpacityAnimated(float opacity) { |
610 UpdatePropertyTreeOpacity(opacity); | 581 UpdatePropertyTreeOpacity(opacity); |
611 layer_tree_impl()->set_needs_update_draw_properties(); | 582 layer_tree_impl()->set_needs_update_draw_properties(); |
612 layer_tree_impl()->AddToOpacityAnimationsMap(id(), opacity); | 583 layer_tree_impl()->AddToOpacityAnimationsMap(id(), opacity); |
613 } | 584 } |
614 | 585 |
615 void LayerImpl::OnTransformAnimated(const gfx::Transform& transform) { | |
616 UpdatePropertyTreeTransform(transform); | |
617 was_ever_ready_since_last_transform_animation_ = false; | |
618 layer_tree_impl()->AddToTransformAnimationsMap(id(), transform); | |
619 } | |
620 | |
621 void LayerImpl::OnScrollOffsetAnimated(const gfx::ScrollOffset& scroll_offset) { | 586 void LayerImpl::OnScrollOffsetAnimated(const gfx::ScrollOffset& scroll_offset) { |
622 // Only layers in the active tree should need to do anything here, since | 587 // Only layers in the active tree should need to do anything here, since |
623 // layers in the pending tree will find out about these changes as a | 588 // layers in the pending tree will find out about these changes as a |
624 // result of the shared SyncedProperty. | 589 // result of the shared SyncedProperty. |
625 if (!IsActive()) | 590 if (!IsActive()) |
626 return; | 591 return; |
627 | 592 |
628 SetCurrentScrollOffset(ClampScrollOffsetToLimits(scroll_offset)); | 593 SetCurrentScrollOffset(ClampScrollOffsetToLimits(scroll_offset)); |
629 | 594 |
630 layer_tree_impl_->DidAnimateScrollOffset(); | 595 layer_tree_impl_->DidAnimateScrollOffset(); |
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1195 .layer_transforms_should_scale_layer_contents) { | 1160 .layer_transforms_should_scale_layer_contents) { |
1196 return default_scale; | 1161 return default_scale; |
1197 } | 1162 } |
1198 | 1163 |
1199 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( | 1164 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( |
1200 ScreenSpaceTransform(), default_scale); | 1165 ScreenSpaceTransform(), default_scale); |
1201 return std::max(transform_scales.x(), transform_scales.y()); | 1166 return std::max(transform_scales.x(), transform_scales.y()); |
1202 } | 1167 } |
1203 | 1168 |
1204 } // namespace cc | 1169 } // namespace cc |
OLD | NEW |