| Index: ui/compositor/layer_animation_observer.cc
|
| diff --git a/ui/compositor/layer_animation_observer.cc b/ui/compositor/layer_animation_observer.cc
|
| index b41676aef27376915e93978f5dc11660eb015ecf..a70eb582ebecdd04f268adde9fa4db17feb77e42 100644
|
| --- a/ui/compositor/layer_animation_observer.cc
|
| +++ b/ui/compositor/layer_animation_observer.cc
|
| @@ -56,10 +56,14 @@ void LayerAnimationObserver::DetachedFromSequence(
|
| // ImplicitAnimationObserver
|
|
|
| ImplicitAnimationObserver::ImplicitAnimationObserver()
|
| - : active_(false) {
|
| + : active_(false),
|
| + destroyed_(NULL) {
|
| }
|
|
|
| -ImplicitAnimationObserver::~ImplicitAnimationObserver() {}
|
| +ImplicitAnimationObserver::~ImplicitAnimationObserver() {
|
| + if (destroyed_)
|
| + *destroyed_ = true;
|
| +}
|
|
|
| void ImplicitAnimationObserver::SetActive(bool active) {
|
| active_ = active;
|
| @@ -73,7 +77,12 @@ void ImplicitAnimationObserver::StopObservingImplicitAnimations() {
|
|
|
| void ImplicitAnimationObserver::OnLayerAnimationEnded(
|
| LayerAnimationSequence* sequence) {
|
| + bool destroyed = false;
|
| + destroyed_ = &destroyed;
|
| sequence->RemoveObserver(this);
|
| + if (destroyed)
|
| + return;
|
| + destroyed_ = NULL;
|
| DCHECK(attached_sequences().find(sequence) == attached_sequences().end());
|
| CheckCompleted();
|
| }
|
| @@ -101,8 +110,8 @@ void ImplicitAnimationObserver::OnDetachedFromSequence(
|
|
|
| void ImplicitAnimationObserver::CheckCompleted() {
|
| if (active_ && attached_sequences().empty()) {
|
| - OnImplicitAnimationsCompleted();
|
| active_ = false;
|
| + OnImplicitAnimationsCompleted();
|
| }
|
| }
|
|
|
|
|