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

Unified Diff: ui/compositor/layer_animator.h

Issue 10942034: Revert 156318 - I had originally tried to build upon http://codereview.chromium.org/10869066/, but … (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/compositor/layer_animation_sequence.cc ('k') | ui/compositor/layer_animator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/compositor/layer_animator.h
===================================================================
--- ui/compositor/layer_animator.h (revision 157564)
+++ ui/compositor/layer_animator.h (working copy)
@@ -34,14 +34,8 @@
// When a property of layer needs to be changed it is set by way of
// LayerAnimator. This enables LayerAnimator to animate property changes.
// NB: during many tests, set_disable_animations_for_test is used and causes
-// all animations to complete immediately. The layer animation is ref counted
-// so that if its owning layer is deleted (and the owning layer is only other
-// class that should ever hold a ref ptr to a LayerAnimator), the animator can
-// ensure that it is not disposed of until it finishes executing. It does this
-// by holding a reference to itself for the duration of methods for which it
-// must guarantee that |this| is valid.
-class COMPOSITOR_EXPORT LayerAnimator
- : public AnimationContainerElement, public base::RefCounted<LayerAnimator> {
+// all animations to complete immediately.
+class COMPOSITOR_EXPORT LayerAnimator : public AnimationContainerElement {
public:
enum PreemptionStrategy {
IMMEDIATELY_SET_NEW_TARGET,
@@ -52,6 +46,7 @@
};
explicit LayerAnimator(base::TimeDelta transition_duration);
+ virtual ~LayerAnimator();
// No implicit animations when properties are set.
static LayerAnimator* CreateDefaultAnimator();
@@ -84,9 +79,7 @@
float GetTargetGrayscale() const;
// Sets the layer animation delegate the animator is associated with. The
- // animator does not own the delegate. The layer animator expects a non-NULL
- // delegate for most of its operations, so do not call any methods without
- // a valid delegate installed.
+ // animator does not own the delegate.
void SetDelegate(LayerAnimationDelegate* delegate);
// Sets the animation preemption strategy. This determines the behaviour if
@@ -181,22 +174,27 @@
}
protected:
- virtual ~LayerAnimator();
-
LayerAnimationDelegate* delegate() { return delegate_; }
const LayerAnimationDelegate* delegate() const { return delegate_; }
// Virtual for testing.
- virtual void ProgressAnimation(LayerAnimationSequence* sequence,
+ virtual bool ProgressAnimation(LayerAnimationSequence* sequence,
base::TimeDelta delta);
// Returns true if the sequence is owned by this animator.
bool HasAnimation(LayerAnimationSequence* sequence) const;
private:
- friend class base::RefCounted<LayerAnimator>;
friend class ScopedLayerAnimationSettings;
+ class DestroyedTracker;
+
+ // Used by FinishAnimation() to indicate if this has been destroyed.
+ enum DestroyedType {
+ DESTROYED,
+ NOT_DESTROYED,
+ };
+
// We need to keep track of the start time of every running animation.
struct RunningAnimation {
RunningAnimation(LayerAnimationSequence* sequence,
@@ -226,7 +224,8 @@
LayerAnimationSequence* sequence) WARN_UNUSED_RESULT;
// Progresses to the end of the sequence before removing it.
- void FinishAnimation(LayerAnimationSequence* sequence);
+ DestroyedType FinishAnimation(
+ LayerAnimationSequence* sequence) WARN_UNUSED_RESULT;
// Finishes any running animation with zero duration.
void FinishAnyAnimationWithZeroDuration();
@@ -283,10 +282,6 @@
// animation mode if set.
base::TimeDelta GetTransitionDuration() const;
- // Clears the animation queues and notifies any running animations that they
- // have been aborted.
- void ClearAnimationsInternal();
-
// This is the queue of animations to run.
AnimationQueue animation_queue_;
@@ -328,6 +323,8 @@
// aborted.
ObserverList<LayerAnimationObserver> observers_;
+ scoped_refptr<DestroyedTracker> destroyed_tracker_;
+
DISALLOW_COPY_AND_ASSIGN(LayerAnimator);
};
« no previous file with comments | « ui/compositor/layer_animation_sequence.cc ('k') | ui/compositor/layer_animator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698