Index: cc/layer_animation_controller.cc |
diff --git a/cc/layer_animation_controller.cc b/cc/layer_animation_controller.cc |
index c72df0454a79eb3736fc46bd54bd0deffbed9f4a..f4e0d48a6aacf3c555111020ec0303107431fba1 100644 |
--- a/cc/layer_animation_controller.cc |
+++ b/cc/layer_animation_controller.cc |
@@ -103,6 +103,9 @@ void LayerAnimationController::pushAnimationUpdatesTo(LayerAnimationController* |
void LayerAnimationController::animate(double monotonicTime, AnimationEventsVector* events) |
{ |
+ if (!hasActiveObserver()) |
+ return; |
+ |
startAnimationsWaitingForNextTick(monotonicTime, events); |
startAnimationsWaitingForStartTime(monotonicTime, events); |
startAnimationsWaitingForTargetAvailability(monotonicTime, events); |
@@ -457,4 +460,16 @@ void LayerAnimationController::notifyObserversTransformAnimated(const gfx::Trans |
OnTransformAnimated(transform)); |
} |
+bool LayerAnimationController::hasActiveObserver() |
+{ |
+ if (m_observers.might_have_observers()) { |
+ ObserverListBase<LayerAnimationValueObserver>::Iterator it(m_observers); |
+ LayerAnimationValueObserver* obs; |
+ while ((obs = it.GetNext()) != NULL) |
+ if (obs->IsActive()) |
+ return true; |
+ } |
+ return false; |
+} |
+ |
} // namespace cc |