| Index: Source/core/frame/FrameView.cpp
|
| diff --git a/Source/core/frame/FrameView.cpp b/Source/core/frame/FrameView.cpp
|
| index 7e36f9e5f3dc84acc5367a2e73adb07ca8f705d8..6fbb16e0d01bddf93e854a636b9dbb6e7ca13be1 100644
|
| --- a/Source/core/frame/FrameView.cpp
|
| +++ b/Source/core/frame/FrameView.cpp
|
| @@ -137,7 +137,7 @@ FrameView::FrameView(Frame* frame)
|
| : m_frame(frame)
|
| , m_canHaveScrollbars(true)
|
| , m_slowRepaintObjectCount(0)
|
| - , m_layoutTimer(this, &FrameView::layoutTimerFired)
|
| + , m_hasPendingLayout(false)
|
| , m_layoutSubtreeRoot(0)
|
| , m_inSynchronousPostLayout(false)
|
| , m_postLayoutTasksTimer(this, &FrameView::postLayoutTimerFired)
|
| @@ -221,7 +221,7 @@ void FrameView::reset()
|
| m_cannotBlitToWindow = false;
|
| m_isOverlapped = false;
|
| m_contentIsOpaque = false;
|
| - m_layoutTimer.stop();
|
| + m_hasPendingLayout = false;
|
| m_layoutSubtreeRoot = 0;
|
| m_delayedLayout = false;
|
| m_doFullRepaint = true;
|
| @@ -909,7 +909,7 @@ void FrameView::layout(bool allowSubtree)
|
| // Every scroll that happens during layout is programmatic.
|
| TemporaryChange<bool> changeInProgrammaticScroll(m_inProgrammaticScroll, true);
|
|
|
| - m_layoutTimer.stop();
|
| + m_hasPendingLayout = false;
|
| m_delayedLayout = false;
|
|
|
| // we shouldn't enter layout() while painting
|
| @@ -1791,11 +1791,6 @@ void FrameView::handleLoadCompleted()
|
| autoSizeIfEnabled();
|
| }
|
|
|
| -void FrameView::layoutTimerFired(Timer<FrameView>*)
|
| -{
|
| - layout();
|
| -}
|
| -
|
| void FrameView::scheduleRelayout()
|
| {
|
| ASSERT(m_frame->view() == this);
|
| @@ -1813,13 +1808,14 @@ void FrameView::scheduleRelayout()
|
| InspectorInstrumentation::didInvalidateLayout(m_frame.get());
|
|
|
| int delay = m_frame->document()->minimumLayoutDelay();
|
| - if (m_layoutTimer.isActive() && m_delayedLayout && !delay)
|
| + if (m_hasPendingLayout && m_delayedLayout && !delay)
|
| unscheduleRelayout();
|
| - if (m_layoutTimer.isActive())
|
| + if (m_hasPendingLayout)
|
| return;
|
|
|
| m_delayedLayout = delay != 0;
|
| - m_layoutTimer.startOneShot(delay * 0.001);
|
| + m_hasPendingLayout = true;
|
| + scheduleAnimation();
|
| }
|
|
|
| static bool isObjectAncestorContainerOf(RenderObject* ancestor, RenderObject* descendant)
|
| @@ -1869,13 +1865,14 @@ void FrameView::scheduleRelayoutOfSubtree(RenderObject* relayoutRoot)
|
| ASSERT(!m_layoutSubtreeRoot->container() || !m_layoutSubtreeRoot->container()->needsLayout());
|
| InspectorInstrumentation::didInvalidateLayout(m_frame.get());
|
| m_delayedLayout = delay != 0;
|
| - m_layoutTimer.startOneShot(delay * 0.001);
|
| + m_hasPendingLayout = true;
|
| + scheduleAnimation();
|
| }
|
| }
|
|
|
| bool FrameView::layoutPending() const
|
| {
|
| - return m_layoutTimer.isActive();
|
| + return m_hasPendingLayout;
|
| }
|
|
|
| bool FrameView::needsLayout() const
|
| @@ -1898,10 +1895,10 @@ void FrameView::setNeedsLayout()
|
|
|
| void FrameView::unscheduleRelayout()
|
| {
|
| - if (!m_layoutTimer.isActive())
|
| + if (!m_hasPendingLayout)
|
| return;
|
|
|
| - m_layoutTimer.stop();
|
| + m_hasPendingLayout = false;
|
| m_delayedLayout = false;
|
| }
|
|
|
|
|