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/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" |
(...skipping 792 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
803 marked_animations_for_deletions = true; | 803 marked_animations_for_deletions = true; |
804 continue; | 804 continue; |
805 } | 805 } |
806 | 806 |
807 bool all_anims_with_same_id_are_finished = false; | 807 bool all_anims_with_same_id_are_finished = false; |
808 | 808 |
809 // Since deleting an animation on the main thread leads to its deletion | 809 // Since deleting an animation on the main thread leads to its deletion |
810 // on the impl thread, we only mark a FINISHED main thread animation for | 810 // on the impl thread, we only mark a FINISHED main thread animation for |
811 // deletion once it has received a FINISHED event from the impl thread. | 811 // deletion once it has received a FINISHED event from the impl thread. |
812 bool animation_i_will_send_or_has_received_finish_event = | 812 bool animation_i_will_send_or_has_received_finish_event = |
813 events || animations_[i]->received_finished_event(); | 813 animations_[i]->is_controlling_instance() || |
| 814 animations_[i]->is_impl_only() || |
| 815 animations_[i]->received_finished_event(); |
814 // If an animation is finished, and not already marked for deletion, | 816 // If an animation is finished, and not already marked for deletion, |
815 // find out if all other animations in the same group are also finished. | 817 // find out if all other animations in the same group are also finished. |
816 if (animations_[i]->run_state() == Animation::FINISHED && | 818 if (animations_[i]->run_state() == Animation::FINISHED && |
817 animation_i_will_send_or_has_received_finish_event) { | 819 animation_i_will_send_or_has_received_finish_event) { |
818 // Clear the animations_with_same_group_id if it was added for | 820 // Clear the animations_with_same_group_id if it was added for |
819 // the previous animation's iteration. | 821 // the previous animation's iteration. |
820 if (animations_with_same_group_id.size() > 0) | 822 if (animations_with_same_group_id.size() > 0) |
821 animations_with_same_group_id.clear(); | 823 animations_with_same_group_id.clear(); |
822 all_anims_with_same_id_are_finished = true; | 824 all_anims_with_same_id_are_finished = true; |
823 for (size_t j = 0; j < animations_.size(); ++j) { | 825 for (size_t j = 0; j < animations_.size(); ++j) { |
824 bool animation_j_will_send_or_has_received_finish_event = | 826 bool animation_j_will_send_or_has_received_finish_event = |
825 events || animations_[j]->received_finished_event(); | 827 animations_[j]->is_controlling_instance() || |
| 828 animations_[j]->is_impl_only() || |
| 829 animations_[j]->received_finished_event(); |
826 if (group_id == animations_[j]->group()) { | 830 if (group_id == animations_[j]->group()) { |
827 if (!animations_[j]->is_finished() || | 831 if (!animations_[j]->is_finished() || |
828 (animations_[j]->run_state() == Animation::FINISHED && | 832 (animations_[j]->run_state() == Animation::FINISHED && |
829 !animation_j_will_send_or_has_received_finish_event)) { | 833 !animation_j_will_send_or_has_received_finish_event)) { |
830 all_anims_with_same_id_are_finished = false; | 834 all_anims_with_same_id_are_finished = false; |
831 break; | 835 break; |
832 } else if (j >= i && | 836 } else if (j >= i && |
833 animations_[j]->run_state() != Animation::ABORTED) { | 837 animations_[j]->run_state() != Animation::ABORTED) { |
834 // Mark down the animations which belong to the same group | 838 // Mark down the animations which belong to the same group |
835 // and is not yet aborted. If this current iteration finds that all | 839 // and is not yet aborted. If this current iteration finds that all |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1059 &value_observers_); | 1063 &value_observers_); |
1060 LayerAnimationValueObserver* obs; | 1064 LayerAnimationValueObserver* obs; |
1061 while ((obs = it.GetNext()) != nullptr) | 1065 while ((obs = it.GetNext()) != nullptr) |
1062 if (obs->IsActive()) | 1066 if (obs->IsActive()) |
1063 return true; | 1067 return true; |
1064 } | 1068 } |
1065 return false; | 1069 return false; |
1066 } | 1070 } |
1067 | 1071 |
1068 } // namespace cc | 1072 } // namespace cc |
OLD | NEW |