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

Side by Side Diff: cc/animation/layer_animation_controller.cc

Issue 1437413002: cc: Remove ScopedPtrVector and cc::remove_if. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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 | « cc/animation/layer_animation_controller.h ('k') | cc/base/BUILD.gn » ('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 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/animation/layer_animation_controller.h" 5 #include "cc/animation/layer_animation_controller.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "cc/animation/animation.h" 10 #include "cc/animation/animation.h"
11 #include "cc/animation/animation_delegate.h" 11 #include "cc/animation/animation_delegate.h"
12 #include "cc/animation/animation_registrar.h" 12 #include "cc/animation/animation_registrar.h"
13 #include "cc/animation/keyframed_animation_curve.h" 13 #include "cc/animation/keyframed_animation_curve.h"
14 #include "cc/animation/layer_animation_value_observer.h" 14 #include "cc/animation/layer_animation_value_observer.h"
15 #include "cc/animation/layer_animation_value_provider.h" 15 #include "cc/animation/layer_animation_value_provider.h"
16 #include "cc/animation/scroll_offset_animation_curve.h" 16 #include "cc/animation/scroll_offset_animation_curve.h"
17 #include "cc/base/scoped_ptr_algorithm.h"
18 #include "cc/output/filter_operations.h" 17 #include "cc/output/filter_operations.h"
19 #include "ui/gfx/geometry/box_f.h" 18 #include "ui/gfx/geometry/box_f.h"
20 #include "ui/gfx/transform.h" 19 #include "ui/gfx/transform.h"
21 20
22 namespace cc { 21 namespace cc {
23 22
24 LayerAnimationController::LayerAnimationController(int id) 23 LayerAnimationController::LayerAnimationController(int id)
25 : registrar_(0), 24 : registrar_(0),
26 id_(id), 25 id_(id),
27 is_active_(false), 26 is_active_(false),
(...skipping 18 matching lines...) Expand all
46 base::TimeDelta time_offset) { 45 base::TimeDelta time_offset) {
47 for (size_t i = 0; i < animations_.size(); ++i) { 46 for (size_t i = 0; i < animations_.size(); ++i) {
48 if (animations_[i]->id() == animation_id) { 47 if (animations_[i]->id() == animation_id) {
49 animations_[i]->SetRunState(Animation::PAUSED, 48 animations_[i]->SetRunState(Animation::PAUSED,
50 time_offset + animations_[i]->start_time() + 49 time_offset + animations_[i]->start_time() +
51 animations_[i]->time_offset()); 50 animations_[i]->time_offset());
52 } 51 }
53 } 52 }
54 } 53 }
55 54
56 struct HasAnimationId {
57 explicit HasAnimationId(int id) : id_(id) {}
58 bool operator()(Animation* animation) const {
59 return animation->id() == id_;
60 }
61
62 private:
63 int id_;
64 };
65
66 void LayerAnimationController::UpdatePotentiallyAnimatingTransform() { 55 void LayerAnimationController::UpdatePotentiallyAnimatingTransform() {
67 bool was_potentially_animating_transform_for_active_observers = 56 bool was_potentially_animating_transform_for_active_observers =
68 potentially_animating_transform_for_active_observers_; 57 potentially_animating_transform_for_active_observers_;
69 bool was_potentially_animating_transform_for_pending_observers = 58 bool was_potentially_animating_transform_for_pending_observers =
70 potentially_animating_transform_for_pending_observers_; 59 potentially_animating_transform_for_pending_observers_;
71 60
72 potentially_animating_transform_for_active_observers_ = false; 61 potentially_animating_transform_for_active_observers_ = false;
73 potentially_animating_transform_for_pending_observers_ = false; 62 potentially_animating_transform_for_pending_observers_ = false;
74 63
75 for (Animation* animation : animations_) { 64 for (const auto& animation : animations_) {
76 if (!animation->is_finished() && 65 if (!animation->is_finished() &&
77 animation->target_property() == Animation::TRANSFORM) { 66 animation->target_property() == Animation::TRANSFORM) {
78 potentially_animating_transform_for_active_observers_ |= 67 potentially_animating_transform_for_active_observers_ |=
79 animation->affects_active_observers(); 68 animation->affects_active_observers();
80 potentially_animating_transform_for_pending_observers_ |= 69 potentially_animating_transform_for_pending_observers_ |=
81 animation->affects_pending_observers(); 70 animation->affects_pending_observers();
82 } 71 }
83 } 72 }
84 73
85 bool changed_for_active_observers = 74 bool changed_for_active_observers =
86 was_potentially_animating_transform_for_active_observers != 75 was_potentially_animating_transform_for_active_observers !=
87 potentially_animating_transform_for_active_observers_; 76 potentially_animating_transform_for_active_observers_;
88 bool changed_for_pending_observers = 77 bool changed_for_pending_observers =
89 was_potentially_animating_transform_for_pending_observers != 78 was_potentially_animating_transform_for_pending_observers !=
90 potentially_animating_transform_for_pending_observers_; 79 potentially_animating_transform_for_pending_observers_;
91 80
92 if (!changed_for_active_observers && !changed_for_pending_observers) 81 if (!changed_for_active_observers && !changed_for_pending_observers)
93 return; 82 return;
94 83
95 NotifyObserversTransformIsPotentiallyAnimatingChanged( 84 NotifyObserversTransformIsPotentiallyAnimatingChanged(
96 changed_for_active_observers, changed_for_pending_observers); 85 changed_for_active_observers, changed_for_pending_observers);
97 } 86 }
98 87
99 void LayerAnimationController::RemoveAnimation(int animation_id) { 88 void LayerAnimationController::RemoveAnimation(int animation_id) {
100 bool removed_transform_animation = false; 89 bool removed_transform_animation = false;
101 auto animations_to_remove = 90 // Since we want to use the animations that we're going to remove, we need to
102 animations_.remove_if(HasAnimationId(animation_id)); 91 // use a stable_parition here instead of remove_if. Remove_if leaves the
92 // removed items in an unspecified state.
93 auto animations_to_remove = std::stable_partition(
94 animations_.begin(), animations_.end(),
95 [animation_id](const scoped_ptr<Animation>& animation) {
96 return animation->id() != animation_id;
97 });
103 for (auto it = animations_to_remove; it != animations_.end(); ++it) { 98 for (auto it = animations_to_remove; it != animations_.end(); ++it) {
104 if ((*it)->target_property() == Animation::SCROLL_OFFSET) { 99 if ((*it)->target_property() == Animation::SCROLL_OFFSET) {
105 scroll_offset_animation_was_interrupted_ = true; 100 scroll_offset_animation_was_interrupted_ = true;
106 } else if ((*it)->target_property() == Animation::TRANSFORM && 101 } else if ((*it)->target_property() == Animation::TRANSFORM &&
107 !(*it)->is_finished()) { 102 !(*it)->is_finished()) {
108 removed_transform_animation = true; 103 removed_transform_animation = true;
109 } 104 }
110 } 105 }
111 106
112 animations_.erase(animations_to_remove, animations_.end()); 107 animations_.erase(animations_to_remove, animations_.end());
113 UpdateActivation(NORMAL_ACTIVATION); 108 UpdateActivation(NORMAL_ACTIVATION);
114 if (removed_transform_animation) 109 if (removed_transform_animation)
115 UpdatePotentiallyAnimatingTransform(); 110 UpdatePotentiallyAnimatingTransform();
116 } 111 }
117 112
118 struct HasAnimationIdAndProperty {
119 HasAnimationIdAndProperty(int id, Animation::TargetProperty target_property)
120 : id_(id), target_property_(target_property) {}
121 bool operator()(Animation* animation) const {
122 return animation->id() == id_ &&
123 animation->target_property() == target_property_;
124 }
125
126 private:
127 int id_;
128 Animation::TargetProperty target_property_;
129 };
130
131 void LayerAnimationController::RemoveAnimation( 113 void LayerAnimationController::RemoveAnimation(
132 int animation_id, 114 int animation_id,
133 Animation::TargetProperty target_property) { 115 Animation::TargetProperty target_property) {
134 bool removed_transform_animation = false; 116 bool removed_transform_animation = false;
135 auto animations_to_remove = animations_.remove_if( 117 auto does_not_have_id_or_property = [animation_id, target_property](
136 HasAnimationIdAndProperty(animation_id, target_property)); 118 const scoped_ptr<Animation>& animation) {
119 return animation->id() != animation_id ||
120 animation->target_property() != target_property;
121 };
122 // Since we want to use the animations that we're going to remove, we need to
123 // use a stable_parition here instead of remove_if. Remove_if leaves the
124 // removed items in an unspecified state.
125 auto animations_to_remove = std::stable_partition(
126 animations_.begin(), animations_.end(), does_not_have_id_or_property);
137 if (animations_to_remove == animations_.end()) 127 if (animations_to_remove == animations_.end())
138 return; 128 return;
139 129
140 if (target_property == Animation::SCROLL_OFFSET) 130 if (target_property == Animation::SCROLL_OFFSET)
141 scroll_offset_animation_was_interrupted_ = true; 131 scroll_offset_animation_was_interrupted_ = true;
142 else if (target_property == Animation::TRANSFORM && 132 else if (target_property == Animation::TRANSFORM &&
143 !(*animations_to_remove)->is_finished()) 133 !(*animations_to_remove)->is_finished())
144 removed_transform_animation = true; 134 removed_transform_animation = true;
145 135
146 animations_.erase(animations_to_remove, animations_.end()); 136 animations_.erase(animations_to_remove, animations_.end());
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 last_tick_time_ = monotonic_time; 185 last_tick_time_ = monotonic_time;
196 } 186 }
197 187
198 void LayerAnimationController::AccumulatePropertyUpdates( 188 void LayerAnimationController::AccumulatePropertyUpdates(
199 base::TimeTicks monotonic_time, 189 base::TimeTicks monotonic_time,
200 AnimationEventsVector* events) { 190 AnimationEventsVector* events) {
201 if (!events) 191 if (!events)
202 return; 192 return;
203 193
204 for (size_t i = 0; i < animations_.size(); ++i) { 194 for (size_t i = 0; i < animations_.size(); ++i) {
205 Animation* animation = animations_[i]; 195 Animation* animation = animations_[i].get();
206 if (!animation->is_impl_only()) 196 if (!animation->is_impl_only())
207 continue; 197 continue;
208 198
209 if (!animation->InEffect(monotonic_time)) 199 if (!animation->InEffect(monotonic_time))
210 continue; 200 continue;
211 201
212 base::TimeDelta trimmed = 202 base::TimeDelta trimmed =
213 animation->TrimTimeToCurrentIteration(monotonic_time); 203 animation->TrimTimeToCurrentIteration(monotonic_time);
214 switch (animation->target_property()) { 204 switch (animation->target_property()) {
215 case Animation::OPACITY: { 205 case Animation::OPACITY: {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 if (needs_to_start_animations_ && start_ready_animations) { 271 if (needs_to_start_animations_ && start_ready_animations) {
282 StartAnimations(last_tick_time_); 272 StartAnimations(last_tick_time_);
283 PromoteStartedAnimations(last_tick_time_, events); 273 PromoteStartedAnimations(last_tick_time_, events);
284 } 274 }
285 275
286 AccumulatePropertyUpdates(last_tick_time_, events); 276 AccumulatePropertyUpdates(last_tick_time_, events);
287 277
288 UpdateActivation(NORMAL_ACTIVATION); 278 UpdateActivation(NORMAL_ACTIVATION);
289 } 279 }
290 280
291 struct AffectsNoObservers {
292 bool operator()(Animation* animation) const {
293 return !animation->affects_active_observers() &&
294 !animation->affects_pending_observers();
295 }
296 };
297
298 void LayerAnimationController::ActivateAnimations() { 281 void LayerAnimationController::ActivateAnimations() {
299 bool changed_transform_animation = false; 282 bool changed_transform_animation = false;
300 for (size_t i = 0; i < animations_.size(); ++i) { 283 for (size_t i = 0; i < animations_.size(); ++i) {
301 if (animations_[i]->affects_active_observers() != 284 if (animations_[i]->affects_active_observers() !=
302 animations_[i]->affects_pending_observers() && 285 animations_[i]->affects_pending_observers() &&
303 animations_[i]->target_property() == Animation::TRANSFORM) 286 animations_[i]->target_property() == Animation::TRANSFORM)
304 changed_transform_animation = true; 287 changed_transform_animation = true;
305 animations_[i]->set_affects_active_observers( 288 animations_[i]->set_affects_active_observers(
306 animations_[i]->affects_pending_observers()); 289 animations_[i]->affects_pending_observers());
307 } 290 }
308 animations_.erase(cc::remove_if(&animations_, 291 auto affects_no_observers = [](const scoped_ptr<Animation>& animation) {
309 animations_.begin(), 292 return !animation->affects_active_observers() &&
310 animations_.end(), 293 !animation->affects_pending_observers();
311 AffectsNoObservers()), 294 };
295 animations_.erase(std::remove_if(animations_.begin(), animations_.end(),
296 affects_no_observers),
312 animations_.end()); 297 animations_.end());
313 scroll_offset_animation_was_interrupted_ = false; 298 scroll_offset_animation_was_interrupted_ = false;
314 UpdateActivation(NORMAL_ACTIVATION); 299 UpdateActivation(NORMAL_ACTIVATION);
315 if (changed_transform_animation) 300 if (changed_transform_animation)
316 UpdatePotentiallyAnimatingTransform(); 301 UpdatePotentiallyAnimatingTransform();
317 } 302 }
318 303
319 void LayerAnimationController::AddAnimation(scoped_ptr<Animation> animation) { 304 void LayerAnimationController::AddAnimation(scoped_ptr<Animation> animation) {
320 bool added_transform_animation = 305 bool added_transform_animation =
321 animation->target_property() == Animation::TRANSFORM; 306 animation->target_property() == Animation::TRANSFORM;
322 animations_.push_back(animation.Pass()); 307 animations_.push_back(animation.Pass());
323 needs_to_start_animations_ = true; 308 needs_to_start_animations_ = true;
324 UpdateActivation(NORMAL_ACTIVATION); 309 UpdateActivation(NORMAL_ACTIVATION);
325 if (added_transform_animation) 310 if (added_transform_animation)
326 UpdatePotentiallyAnimatingTransform(); 311 UpdatePotentiallyAnimatingTransform();
327 } 312 }
328 313
329 Animation* LayerAnimationController::GetAnimation( 314 Animation* LayerAnimationController::GetAnimation(
330 Animation::TargetProperty target_property) const { 315 Animation::TargetProperty target_property) const {
331 for (size_t i = 0; i < animations_.size(); ++i) { 316 for (size_t i = 0; i < animations_.size(); ++i) {
332 size_t index = animations_.size() - i - 1; 317 size_t index = animations_.size() - i - 1;
333 if (animations_[index]->target_property() == target_property) 318 if (animations_[index]->target_property() == target_property)
334 return animations_[index]; 319 return animations_[index].get();
335 } 320 }
336 return 0; 321 return nullptr;
337 } 322 }
338 323
339 Animation* LayerAnimationController::GetAnimationById(int animation_id) const { 324 Animation* LayerAnimationController::GetAnimationById(int animation_id) const {
340 for (size_t i = 0; i < animations_.size(); ++i) 325 for (size_t i = 0; i < animations_.size(); ++i)
341 if (animations_[i]->id() == animation_id) 326 if (animations_[i]->id() == animation_id)
342 return animations_[i]; 327 return animations_[i].get();
343 return nullptr; 328 return nullptr;
344 } 329 }
345 330
346 bool LayerAnimationController::HasActiveAnimation() const { 331 bool LayerAnimationController::HasActiveAnimation() const {
347 for (size_t i = 0; i < animations_.size(); ++i) { 332 for (size_t i = 0; i < animations_.size(); ++i) {
348 if (!animations_[i]->is_finished()) 333 if (!animations_[i]->is_finished())
349 return true; 334 return true;
350 } 335 }
351 return false; 336 return false;
352 } 337 }
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 static bool IsCompleted( 715 static bool IsCompleted(
731 Animation* animation, 716 Animation* animation,
732 const LayerAnimationController* main_thread_controller) { 717 const LayerAnimationController* main_thread_controller) {
733 if (animation->is_impl_only()) { 718 if (animation->is_impl_only()) {
734 return (animation->run_state() == Animation::WAITING_FOR_DELETION); 719 return (animation->run_state() == Animation::WAITING_FOR_DELETION);
735 } else { 720 } else {
736 return !main_thread_controller->GetAnimationById(animation->id()); 721 return !main_thread_controller->GetAnimationById(animation->id());
737 } 722 }
738 } 723 }
739 724
740 static bool AffectsActiveOnlyAndIsWaitingForDeletion(Animation* animation) {
741 return animation->run_state() == Animation::WAITING_FOR_DELETION &&
742 !animation->affects_pending_observers();
743 }
744
745 void LayerAnimationController::RemoveAnimationsCompletedOnMainThread( 725 void LayerAnimationController::RemoveAnimationsCompletedOnMainThread(
746 LayerAnimationController* controller_impl) const { 726 LayerAnimationController* controller_impl) const {
747 bool removed_transform_animation = false; 727 bool removed_transform_animation = false;
748 // Animations removed on the main thread should no longer affect pending 728 // Animations removed on the main thread should no longer affect pending
749 // observers, and should stop affecting active observers after the next call 729 // observers, and should stop affecting active observers after the next call
750 // to ActivateAnimations. If already WAITING_FOR_DELETION, they can be removed 730 // to ActivateAnimations. If already WAITING_FOR_DELETION, they can be removed
751 // immediately. 731 // immediately.
752 ScopedPtrVector<Animation>& animations = controller_impl->animations_; 732 auto& animations = controller_impl->animations_;
753 for (size_t i = 0; i < animations.size(); ++i) { 733 for (const auto& animation : animations) {
754 if (IsCompleted(animations[i], this)) { 734 if (IsCompleted(animation.get(), this)) {
755 animations[i]->set_affects_pending_observers(false); 735 animation->set_affects_pending_observers(false);
756 if (animations[i]->target_property() == Animation::TRANSFORM) 736 if (animation->target_property() == Animation::TRANSFORM)
757 removed_transform_animation = true; 737 removed_transform_animation = true;
758 } 738 }
759 } 739 }
760 animations.erase(cc::remove_if(&animations, 740 auto affects_active_only_and_is_waiting_for_deletion = [](
761 animations.begin(), 741 const scoped_ptr<Animation>& animation) {
762 animations.end(), 742 return animation->run_state() == Animation::WAITING_FOR_DELETION &&
763 AffectsActiveOnlyAndIsWaitingForDeletion), 743 !animation->affects_pending_observers();
764 animations.end()); 744 };
745 animations.erase(
746 std::remove_if(animations.begin(), animations.end(),
747 affects_active_only_and_is_waiting_for_deletion),
748 animations.end());
765 749
766 if (removed_transform_animation) 750 if (removed_transform_animation)
767 controller_impl->UpdatePotentiallyAnimatingTransform(); 751 controller_impl->UpdatePotentiallyAnimatingTransform();
768 } 752 }
769 753
770 void LayerAnimationController::PushPropertiesToImplThread( 754 void LayerAnimationController::PushPropertiesToImplThread(
771 LayerAnimationController* controller_impl) { 755 LayerAnimationController* controller_impl) {
772 for (size_t i = 0; i < animations_.size(); ++i) { 756 for (size_t i = 0; i < animations_.size(); ++i) {
773 Animation* current_impl = 757 Animation* current_impl =
774 controller_impl->GetAnimationById(animations_[i]->id()); 758 controller_impl->GetAnimationById(animations_[i]->id());
(...skipping 28 matching lines...) Expand all
803 } else if (animations_[i]->run_state() == 787 } else if (animations_[i]->run_state() ==
804 Animation::WAITING_FOR_TARGET_AVAILABILITY) { 788 Animation::WAITING_FOR_TARGET_AVAILABILITY) {
805 animations_waiting_for_target.push_back(i); 789 animations_waiting_for_target.push_back(i);
806 } 790 }
807 } 791 }
808 792
809 for (size_t i = 0; i < animations_waiting_for_target.size(); ++i) { 793 for (size_t i = 0; i < animations_waiting_for_target.size(); ++i) {
810 // Collect all properties for animations with the same group id (they 794 // Collect all properties for animations with the same group id (they
811 // should all also be in the list of animations). 795 // should all also be in the list of animations).
812 size_t animation_index = animations_waiting_for_target[i]; 796 size_t animation_index = animations_waiting_for_target[i];
813 Animation* animation_waiting_for_target = animations_[animation_index]; 797 Animation* animation_waiting_for_target =
798 animations_[animation_index].get();
814 // Check for the run state again even though the animation was waiting 799 // Check for the run state again even though the animation was waiting
815 // for target because it might have changed the run state while handling 800 // for target because it might have changed the run state while handling
816 // previous animation in this loop (if they belong to same group). 801 // previous animation in this loop (if they belong to same group).
817 if (animation_waiting_for_target->run_state() == 802 if (animation_waiting_for_target->run_state() ==
818 Animation::WAITING_FOR_TARGET_AVAILABILITY) { 803 Animation::WAITING_FOR_TARGET_AVAILABILITY) {
819 TargetProperties enqueued_properties; 804 TargetProperties enqueued_properties;
820 bool affects_active_observers = 805 bool affects_active_observers =
821 animation_waiting_for_target->affects_active_observers(); 806 animation_waiting_for_target->affects_active_observers();
822 bool affects_pending_observers = 807 bool affects_pending_observers =
823 animation_waiting_for_target->affects_pending_observers(); 808 animation_waiting_for_target->affects_pending_observers();
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 animations_[animation_index]->SetRunState( 987 animations_[animation_index]->SetRunState(
1003 Animation::WAITING_FOR_DELETION, monotonic_time); 988 Animation::WAITING_FOR_DELETION, monotonic_time);
1004 } 989 }
1005 marked_animations_for_deletions = true; 990 marked_animations_for_deletions = true;
1006 } 991 }
1007 } 992 }
1008 if (marked_animations_for_deletions) 993 if (marked_animations_for_deletions)
1009 NotifyObserversAnimationWaitingForDeletion(); 994 NotifyObserversAnimationWaitingForDeletion();
1010 } 995 }
1011 996
1012 static bool IsWaitingForDeletion(Animation* animation) {
1013 return animation->run_state() == Animation::WAITING_FOR_DELETION;
1014 }
1015
1016 void LayerAnimationController::PurgeAnimationsMarkedForDeletion() { 997 void LayerAnimationController::PurgeAnimationsMarkedForDeletion() {
1017 animations_.erase(cc::remove_if(&animations_, 998 animations_.erase(std::remove_if(animations_.begin(), animations_.end(),
1018 animations_.begin(), 999 [](const scoped_ptr<Animation>& animation) {
1019 animations_.end(), 1000 return animation->run_state() ==
1020 IsWaitingForDeletion), 1001 Animation::WAITING_FOR_DELETION;
1002 }),
1021 animations_.end()); 1003 animations_.end());
1022 } 1004 }
1023 1005
1024 void LayerAnimationController::TickAnimations(base::TimeTicks monotonic_time) { 1006 void LayerAnimationController::TickAnimations(base::TimeTicks monotonic_time) {
1025 for (size_t i = 0; i < animations_.size(); ++i) { 1007 for (size_t i = 0; i < animations_.size(); ++i) {
1026 if (animations_[i]->run_state() == Animation::STARTING || 1008 if (animations_[i]->run_state() == Animation::STARTING ||
1027 animations_[i]->run_state() == Animation::RUNNING || 1009 animations_[i]->run_state() == Animation::RUNNING ||
1028 animations_[i]->run_state() == Animation::PAUSED) { 1010 animations_[i]->run_state() == Animation::PAUSED) {
1029 if (!animations_[i]->InEffect(monotonic_time)) 1011 if (!animations_[i]->InEffect(monotonic_time))
1030 continue; 1012 continue;
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1217 &value_observers_); 1199 &value_observers_);
1218 LayerAnimationValueObserver* obs; 1200 LayerAnimationValueObserver* obs;
1219 while ((obs = it.GetNext()) != nullptr) 1201 while ((obs = it.GetNext()) != nullptr)
1220 if (obs->IsActive()) 1202 if (obs->IsActive())
1221 return true; 1203 return true;
1222 } 1204 }
1223 return false; 1205 return false;
1224 } 1206 }
1225 1207
1226 } // namespace cc 1208 } // namespace cc
OLDNEW
« no previous file with comments | « cc/animation/layer_animation_controller.h ('k') | cc/base/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698