| Index: Source/core/page/PageAnimator.cpp
|
| diff --git a/Source/core/page/PageAnimator.cpp b/Source/core/page/PageAnimator.cpp
|
| index 0412bd9adc3d5e2601c605b812c633d12494a35e..0fd03145c9273b25d5d2d74905423020c3ac87b0 100644
|
| --- a/Source/core/page/PageAnimator.cpp
|
| +++ b/Source/core/page/PageAnimator.cpp
|
| @@ -28,22 +28,22 @@ void PageAnimator::serviceScriptedAnimations(double monotonicAnimationStartTime)
|
| m_animationFramePending = false;
|
| TemporaryChange<bool> servicing(m_servicingAnimations, true);
|
|
|
| - for (RefPtr<Frame> frame = m_page->mainFrame(); frame; frame = frame->tree().traverseNext()) {
|
| - if (frame->isLocalFrame()) {
|
| - RefPtr<LocalFrame> localFrame = toLocalFrame(frame.get());
|
| - localFrame->view()->serviceScrollAnimations(monotonicAnimationStartTime);
|
| -
|
| - DocumentAnimations::updateAnimationTimingForAnimationFrame(*localFrame->document(), monotonicAnimationStartTime);
|
| - SVGDocumentExtensions::serviceOnAnimationFrame(*localFrame->document(), monotonicAnimationStartTime);
|
| - }
|
| - }
|
| -
|
| WillBeHeapVector<RefPtrWillBeMember<Document> > documents;
|
| for (Frame* frame = m_page->mainFrame(); frame; frame = frame->tree().traverseNext()) {
|
| if (frame->isLocalFrame())
|
| documents.append(toLocalFrame(frame)->document());
|
| }
|
|
|
| + for (size_t i = 0; i < documents.size(); ++i) {
|
| + if (documents[i]->frame())
|
| + documents[i]->view()->serviceScrollAnimations(monotonicAnimationStartTime);
|
| + }
|
| +
|
| + for (size_t i = 0; i < documents.size(); ++i) {
|
| + DocumentAnimations::updateAnimationTimingForAnimationFrame(*documents[i], monotonicAnimationStartTime);
|
| + SVGDocumentExtensions::serviceOnAnimationFrame(*documents[i], monotonicAnimationStartTime);
|
| + }
|
| +
|
| for (size_t i = 0; i < documents.size(); ++i)
|
| documents[i]->serviceScriptedAnimations(monotonicAnimationStartTime);
|
| }
|
|
|