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

Side by Side Diff: ui/compositor/layer_animator.h

Issue 11896017: Thread ui opacity animations (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fix ash_unittests Created 7 years, 10 months 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 | « ui/compositor/layer_animation_sequence_unittest.cc ('k') | ui/compositor/layer_animator.cc » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 #ifndef UI_COMPOSITOR_LAYER_ANIMATOR_H_ 5 #ifndef UI_COMPOSITOR_LAYER_ANIMATOR_H_
6 #define UI_COMPOSITOR_LAYER_ANIMATOR_H_ 6 #define UI_COMPOSITOR_LAYER_ANIMATOR_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 106
107 // Start an animation sequence. If an animation for the same property is in 107 // Start an animation sequence. If an animation for the same property is in
108 // progress, it needs to be interrupted with the new animation. The animator 108 // progress, it needs to be interrupted with the new animation. The animator
109 // takes ownership of this animation sequence. 109 // takes ownership of this animation sequence.
110 void StartAnimation(LayerAnimationSequence* animation); 110 void StartAnimation(LayerAnimationSequence* animation);
111 111
112 // Schedule an animation to be run when possible. The animator takes ownership 112 // Schedule an animation to be run when possible. The animator takes ownership
113 // of this animation sequence. 113 // of this animation sequence.
114 void ScheduleAnimation(LayerAnimationSequence* animation); 114 void ScheduleAnimation(LayerAnimationSequence* animation);
115 115
116 // Starts the animations to be run together. Obviously will not work if 116 // Starts the animations to be run together, ensuring that the first elements
117 // they animate any common properties. The animator takes ownership of the 117 // in these sequences have the same effective start time even when some of
118 // them start on the compositor thread (but there is no such guarantee for
119 // the effective start time of subsequent elements). Obviously will not work
120 // if they animate any common properties. The animator takes ownership of the
118 // animation sequences. Takes PreemptionStrategy into account. 121 // animation sequences. Takes PreemptionStrategy into account.
119 void StartTogether(const std::vector<LayerAnimationSequence*>& animations); 122 void StartTogether(const std::vector<LayerAnimationSequence*>& animations);
120 123
121 // Schedules the animations to be run together. Obviously will not work if 124 // Schedules the animations to be run together, ensuring that the first
122 // they animate any common properties. The animator takes ownership of the 125 // elements in these sequences have the same effective start time even when
123 // animation sequences. 126 // some of them start on the compositor thread (but there is no such guarantee
127 // for the effective start time of subsequent elements). Obviously will not
128 // work if they animate any common properties. The animator takes ownership
129 // of the animation sequences.
124 void ScheduleTogether(const std::vector<LayerAnimationSequence*>& animations); 130 void ScheduleTogether(const std::vector<LayerAnimationSequence*>& animations);
125 131
126 // Schedules a pause for length |duration| of all the specified properties. 132 // Schedules a pause for length |duration| of all the specified properties.
127 // End the list with -1. 133 // End the list with -1.
128 void SchedulePauseForProperties( 134 void SchedulePauseForProperties(
129 base::TimeDelta duration, 135 base::TimeDelta duration,
130 LayerAnimationElement::AnimatableProperty property, 136 LayerAnimationElement::AnimatableProperty property,
131 ...); 137 ...);
132 138
133 // Returns true if there is an animation in the queue (animations remain in 139 // Returns true if there is an animation in the queue (animations remain in
(...skipping 18 matching lines...) Expand all
152 158
153 // This is similar to StopAnimating, but aborts rather than finishes the 159 // This is similar to StopAnimating, but aborts rather than finishes the
154 // animations and notifies all observers. 160 // animations and notifies all observers.
155 void AbortAllAnimations() { StopAnimatingInternal(true); } 161 void AbortAllAnimations() { StopAnimatingInternal(true); }
156 162
157 // These functions are used for adding or removing observers from the observer 163 // These functions are used for adding or removing observers from the observer
158 // list. The observers are notified when animations end. 164 // list. The observers are notified when animations end.
159 void AddObserver(LayerAnimationObserver* observer); 165 void AddObserver(LayerAnimationObserver* observer);
160 void RemoveObserver(LayerAnimationObserver* observer); 166 void RemoveObserver(LayerAnimationObserver* observer);
161 167
168 // Called when a threaded animation is actually started.
169 void OnThreadedAnimationStarted(const cc::AnimationEvent& event);
170
162 // This determines how implicit animations will be tweened. This has no 171 // This determines how implicit animations will be tweened. This has no
163 // effect on animations that are explicitly started or scheduled. The default 172 // effect on animations that are explicitly started or scheduled. The default
164 // is Tween::LINEAR. 173 // is Tween::LINEAR.
165 void set_tween_type(Tween::Type tween_type) { tween_type_ = tween_type; } 174 void set_tween_type(Tween::Type tween_type) { tween_type_ = tween_type; }
166 Tween::Type tween_type() const { return tween_type_; } 175 Tween::Type tween_type() const { return tween_type_; }
167 176
168 // For testing purposes only. 177 // For testing purposes only.
169 void set_disable_timer_for_test(bool disable_timer) { 178 void set_disable_timer_for_test(bool disable_timer) {
170 disable_timer_for_test_ = disable_timer; 179 disable_timer_for_test_ = disable_timer;
171 } 180 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 base::TimeTicks now); 218 base::TimeTicks now);
210 219
211 void ProgressAnimationToEnd(LayerAnimationSequence* sequence); 220 void ProgressAnimationToEnd(LayerAnimationSequence* sequence);
212 221
213 // Returns true if the sequence is owned by this animator. 222 // Returns true if the sequence is owned by this animator.
214 bool HasAnimation(LayerAnimationSequence* sequence) const; 223 bool HasAnimation(LayerAnimationSequence* sequence) const;
215 224
216 private: 225 private:
217 friend class base::RefCounted<LayerAnimator>; 226 friend class base::RefCounted<LayerAnimator>;
218 friend class ScopedLayerAnimationSettings; 227 friend class ScopedLayerAnimationSettings;
228 friend class LayerAnimatorTestController;
219 229
220 class RunningAnimation { 230 class RunningAnimation {
221 public: 231 public:
222 RunningAnimation(const base::WeakPtr<LayerAnimationSequence>& sequence); 232 RunningAnimation(const base::WeakPtr<LayerAnimationSequence>& sequence);
223 ~RunningAnimation(); 233 ~RunningAnimation();
224 234
225 bool is_sequence_alive() const { return !!sequence_; } 235 bool is_sequence_alive() const { return !!sequence_; }
226 LayerAnimationSequence* sequence() const { return sequence_.get(); } 236 LayerAnimationSequence* sequence() const { return sequence_.get(); }
227 237
228 private: 238 private:
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 // Observers are notified when layer animations end, are scheduled or are 371 // Observers are notified when layer animations end, are scheduled or are
362 // aborted. 372 // aborted.
363 ObserverList<LayerAnimationObserver> observers_; 373 ObserverList<LayerAnimationObserver> observers_;
364 374
365 DISALLOW_COPY_AND_ASSIGN(LayerAnimator); 375 DISALLOW_COPY_AND_ASSIGN(LayerAnimator);
366 }; 376 };
367 377
368 } // namespace ui 378 } // namespace ui
369 379
370 #endif // UI_COMPOSITOR_LAYER_ANIMATOR_H_ 380 #endif // UI_COMPOSITOR_LAYER_ANIMATOR_H_
OLDNEW
« no previous file with comments | « ui/compositor/layer_animation_sequence_unittest.cc ('k') | ui/compositor/layer_animator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698