Index: ui/compositor/layer_animation_sequence.cc |
diff --git a/ui/compositor/layer_animation_sequence.cc b/ui/compositor/layer_animation_sequence.cc |
index 9ebf1e0552bc596c08c5d9edcf0ada590db0a203..94b664b74a3dd9a4ebfd3e5e23a2b3c3dc6accd5 100644 |
--- a/ui/compositor/layer_animation_sequence.cc |
+++ b/ui/compositor/layer_animation_sequence.cc |
@@ -16,7 +16,8 @@ |
namespace ui { |
LayerAnimationSequence::LayerAnimationSequence() |
- : is_cyclic_(false), |
+ : properties_(LayerAnimationElement::UNKNOWN), |
+ is_cyclic_(false), |
last_element_(0), |
waiting_for_group_start_(false), |
animation_group_id_(0), |
@@ -25,7 +26,8 @@ LayerAnimationSequence::LayerAnimationSequence() |
} |
LayerAnimationSequence::LayerAnimationSequence(LayerAnimationElement* element) |
- : is_cyclic_(false), |
+ : properties_(LayerAnimationElement::UNKNOWN), |
+ is_cyclic_(false), |
last_element_(0), |
waiting_for_group_start_(false), |
animation_group_id_(0), |
@@ -178,20 +180,13 @@ void LayerAnimationSequence::Abort(LayerAnimationDelegate* delegate) { |
} |
void LayerAnimationSequence::AddElement(LayerAnimationElement* element) { |
- properties_.insert(element->properties().begin(), |
- element->properties().end()); |
+ properties_ |= element->properties(); |
elements_.push_back(make_linked_ptr(element)); |
} |
bool LayerAnimationSequence::HasConflictingProperty( |
- const LayerAnimationElement::AnimatableProperties& other) const { |
- LayerAnimationElement::AnimatableProperties intersection; |
- std::insert_iterator<LayerAnimationElement::AnimatableProperties> ii( |
- intersection, intersection.begin()); |
- std::set_intersection(properties_.begin(), properties_.end(), |
- other.begin(), other.end(), |
- ii); |
- return (intersection.size() > 0); |
+ LayerAnimationElement::AnimatableProperties other) const { |
+ return (properties_ & other) != LayerAnimationElement::UNKNOWN; |
} |
bool LayerAnimationSequence::IsFirstElementThreaded() const { |
@@ -219,11 +214,11 @@ void LayerAnimationSequence::OnThreadedAnimationStarted( |
return; |
size_t current_index = last_element_ % elements_.size(); |
- const LayerAnimationElement::AnimatableProperties& element_properties = |
+ LayerAnimationElement::AnimatableProperties element_properties = |
elements_[current_index]->properties(); |
LayerAnimationElement::AnimatableProperty event_property = |
LayerAnimationElement::ToAnimatableProperty(event.target_property); |
- DCHECK(element_properties.find(event_property) != element_properties.end()); |
+ DCHECK(element_properties & event_property); |
elements_[current_index]->set_effective_start_time( |
base::TimeTicks::FromInternalValue( |
event.monotonic_time * base::Time::kMicrosecondsPerSecond)); |