Index: ui/compositor/layer_animation_sequence.h |
diff --git a/ui/compositor/layer_animation_sequence.h b/ui/compositor/layer_animation_sequence.h |
index 9691ee783a71f7cd7ec12494e8add8eeddb3e218..9c8514250d6a601545909083d49129a3290f9c1f 100644 |
--- a/ui/compositor/layer_animation_sequence.h |
+++ b/ui/compositor/layer_animation_sequence.h |
@@ -47,6 +47,18 @@ class COMPOSITOR_EXPORT LayerAnimationSequence |
void set_start_time(base::TimeTicks start_time) { start_time_ = start_time; } |
base::TimeTicks start_time() const { return start_time_; } |
+ // Sets a flag indicating that this sequence will start together with other |
+ // sequences, and at least one of the sequences in this group has a threaded |
+ // first element. |
+ void set_waiting_for_group_start(bool waiting) { |
+ waiting_for_group_start_ = waiting; |
+ } |
+ bool waiting_for_group_start() { return waiting_for_group_start_; } |
+ |
+ // If starting the animation involves dispatching to another thread, then |
+ // proceed with that dispatch. |
+ void ProgressToEffectiveStart(LayerAnimationDelegate* delegate); |
+ |
// Updates the delegate to the appropriate value for |now|. Requests a |
// redraw if it is required. |
void Progress(base::TimeTicks now, LayerAnimationDelegate* delegate); |
@@ -64,7 +76,7 @@ class COMPOSITOR_EXPORT LayerAnimationSequence |
void GetTargetValue(LayerAnimationElement::TargetValue* target) const; |
// Aborts the given animation. |
- void Abort(); |
+ void Abort(LayerAnimationDelegate* delegate); |
// All properties modified by the sequence. |
const LayerAnimationElement::AnimatableProperties& properties() const { |
@@ -84,11 +96,21 @@ class COMPOSITOR_EXPORT LayerAnimationSequence |
bool HasCommonProperty( |
const LayerAnimationElement::AnimatableProperties& other) const; |
+ // Returns true if the first element animates on the compositor thread. |
+ bool IsFirstElementThreaded() const; |
+ |
+ // Used to identify groups of sequences that are supposed to start together. |
+ int animation_group_id() const { return animation_group_id_; } |
+ void set_animation_group_id(int id) { animation_group_id_ = id; } |
+ |
// These functions are used for adding or removing observers from the observer |
// list. The observers are notified when animations end. |
void AddObserver(LayerAnimationObserver* observer); |
void RemoveObserver(LayerAnimationObserver* observer); |
+ // Called when a threaded animation is actually started. |
+ void OnThreadedAnimationStarted(const cc::AnimationEvent& event); |
+ |
// Called when the animator schedules this sequence. |
void OnScheduled(); |
@@ -126,6 +148,13 @@ class COMPOSITOR_EXPORT LayerAnimationSequence |
// The start time of the current run of the sequence. |
base::TimeTicks start_time_; |
+ // True if this sequence will start together with other sequences, and at |
+ // least one of the sequences in this group has a threaded first element. |
+ bool waiting_for_group_start_; |
+ |
+ // Identifies groups of sequences that are supposed to start together. |
+ int animation_group_id_; |
+ |
// These parties are notified when layer animations end. |
ObserverList<LayerAnimationObserver> observers_; |