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 <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 909 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
920 | 920 |
921 layer->SetStackingOrderChanged(stacking_order_changed_); | 921 layer->SetStackingOrderChanged(stacking_order_changed_); |
922 | 922 |
923 layer_animation_controller_->PushAnimationUpdatesTo( | 923 layer_animation_controller_->PushAnimationUpdatesTo( |
924 layer->layer_animation_controller()); | 924 layer->layer_animation_controller()); |
925 | 925 |
926 // Reset any state that should be cleared for the next update. | 926 // Reset any state that should be cleared for the next update. |
927 stacking_order_changed_ = false; | 927 stacking_order_changed_ = false; |
928 update_rect_ = gfx::RectF(); | 928 update_rect_ = gfx::RectF(); |
929 | 929 |
930 // Animating layers require further push properties to clean up the animation. | 930 needs_push_properties_ = false; |
931 // crbug.com/259088 | |
932 needs_push_properties_ = layer_animation_controller_->has_any_animation(); | |
933 num_dependents_need_push_properties_ = 0; | 931 num_dependents_need_push_properties_ = 0; |
934 } | 932 } |
935 | 933 |
936 scoped_ptr<LayerImpl> Layer::CreateLayerImpl(LayerTreeImpl* tree_impl) { | 934 scoped_ptr<LayerImpl> Layer::CreateLayerImpl(LayerTreeImpl* tree_impl) { |
937 return LayerImpl::Create(tree_impl, layer_id_); | 935 return LayerImpl::Create(tree_impl, layer_id_); |
938 } | 936 } |
939 | 937 |
940 bool Layer::DrawsContent() const { | 938 bool Layer::DrawsContent() const { |
941 return is_drawable_; | 939 return is_drawable_; |
942 } | 940 } |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
991 } | 989 } |
992 | 990 |
993 void Layer::OnOpacityAnimated(float opacity) { | 991 void Layer::OnOpacityAnimated(float opacity) { |
994 opacity_ = opacity; | 992 opacity_ = opacity; |
995 } | 993 } |
996 | 994 |
997 void Layer::OnTransformAnimated(const gfx::Transform& transform) { | 995 void Layer::OnTransformAnimated(const gfx::Transform& transform) { |
998 transform_ = transform; | 996 transform_ = transform; |
999 } | 997 } |
1000 | 998 |
| 999 void Layer::OnAnimationWaitingForDeletion() { |
| 1000 // Animations are only deleted during PushProperties. |
| 1001 SetNeedsPushProperties(); |
| 1002 } |
| 1003 |
1001 bool Layer::IsActive() const { | 1004 bool Layer::IsActive() const { |
1002 return true; | 1005 return true; |
1003 } | 1006 } |
1004 | 1007 |
1005 bool Layer::AddAnimation(scoped_ptr <Animation> animation) { | 1008 bool Layer::AddAnimation(scoped_ptr <Animation> animation) { |
1006 if (!layer_animation_controller_->animation_registrar()) | 1009 if (!layer_animation_controller_->animation_registrar()) |
1007 return false; | 1010 return false; |
1008 | 1011 |
1009 UMA_HISTOGRAM_BOOLEAN("Renderer.AnimationAddedToOrphanLayer", | 1012 UMA_HISTOGRAM_BOOLEAN("Renderer.AnimationAddedToOrphanLayer", |
1010 !layer_tree_host_); | 1013 !layer_tree_host_); |
1011 layer_animation_controller_->AddAnimation(animation.Pass()); | 1014 layer_animation_controller_->AddAnimation(animation.Pass()); |
1012 SetNeedsCommit(); | 1015 SetNeedsCommit(); |
1013 return true; | 1016 return true; |
1014 } | 1017 } |
1015 | 1018 |
1016 void Layer::PauseAnimation(int animation_id, double time_offset) { | 1019 void Layer::PauseAnimation(int animation_id, double time_offset) { |
1017 layer_animation_controller_->PauseAnimation(animation_id, time_offset); | 1020 layer_animation_controller_->PauseAnimation(animation_id, time_offset); |
1018 SetNeedsCommit(); | 1021 SetNeedsCommit(); |
1019 } | 1022 } |
1020 | 1023 |
1021 void Layer::RemoveAnimation(int animation_id) { | 1024 void Layer::RemoveAnimation(int animation_id) { |
1022 layer_animation_controller_->RemoveAnimation(animation_id); | 1025 layer_animation_controller_->RemoveAnimation(animation_id); |
1023 SetNeedsCommit(); | 1026 SetNeedsCommit(); |
1024 } | 1027 } |
1025 | 1028 |
1026 void Layer::SetLayerAnimationControllerForTest( | 1029 void Layer::SetLayerAnimationControllerForTest( |
1027 scoped_refptr<LayerAnimationController> controller) { | 1030 scoped_refptr<LayerAnimationController> controller) { |
1028 layer_animation_controller_->RemoveValueObserver(this); | 1031 layer_animation_controller_->RemoveValueObserver(this); |
1029 layer_animation_controller_ = controller; | 1032 layer_animation_controller_ = controller; |
1030 layer_animation_controller_->set_force_sync(); | |
1031 layer_animation_controller_->AddValueObserver(this); | 1033 layer_animation_controller_->AddValueObserver(this); |
1032 SetNeedsCommit(); | 1034 SetNeedsCommit(); |
1033 } | 1035 } |
1034 | 1036 |
1035 bool Layer::HasActiveAnimation() const { | 1037 bool Layer::HasActiveAnimation() const { |
1036 return layer_animation_controller_->HasActiveAnimation(); | 1038 return layer_animation_controller_->HasActiveAnimation(); |
1037 } | 1039 } |
1038 | 1040 |
1039 void Layer::AddLayerAnimationEventObserver( | 1041 void Layer::AddLayerAnimationEventObserver( |
1040 LayerAnimationEventObserver* animation_observer) { | 1042 LayerAnimationEventObserver* animation_observer) { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1088 clip_parent_->RemoveClipChild(this); | 1090 clip_parent_->RemoveClipChild(this); |
1089 | 1091 |
1090 clip_parent_ = NULL; | 1092 clip_parent_ = NULL; |
1091 } | 1093 } |
1092 | 1094 |
1093 void Layer::RunMicroBenchmark(MicroBenchmark* benchmark) { | 1095 void Layer::RunMicroBenchmark(MicroBenchmark* benchmark) { |
1094 benchmark->RunOnLayer(this); | 1096 benchmark->RunOnLayer(this); |
1095 } | 1097 } |
1096 | 1098 |
1097 } // namespace cc | 1099 } // namespace cc |
OLD | NEW |