Index: Source/core/frame/FrameView.cpp |
diff --git a/Source/core/frame/FrameView.cpp b/Source/core/frame/FrameView.cpp |
index 7d322b1239462e4d08f6ed5d4e60c24900ebb50c..11ecee56f01b53aae11ead423445c07a102a6c39 100644 |
--- a/Source/core/frame/FrameView.cpp |
+++ b/Source/core/frame/FrameView.cpp |
@@ -89,28 +89,6 @@ using namespace HTMLNames; |
double FrameView::s_currentFrameTimeStamp = 0.0; |
bool FrameView::s_inPaintContents = false; |
- |
-// REPAINT_THROTTLING now chooses default values for throttling parameters. |
-// Should be removed when applications start using runtime configuration. |
-#if ENABLE(REPAINT_THROTTLING) |
-// Normal delay |
-static const double s_normalDeferredRepaintDelay = 0.016; |
-// Negative value would mean that first few repaints happen without a delay |
-static const double s_initialDeferredRepaintDelayDuringLoading = 0; |
-// The delay grows on each repaint to this maximum value |
-static const double s_maxDeferredRepaintDelayDuringLoading = 2.5; |
-// On each repaint the delay increses by this amount |
-static const double s_deferredRepaintDelayIncrementDuringLoading = 0.5; |
-#else |
-// FIXME: Repaint throttling could be good to have on all platform. |
-// The balance between CPU use and repaint frequency will need some tuning for desktop. |
-// More hooks may be needed to reset the delay on things like GIF and CSS animations. |
-static const double s_normalDeferredRepaintDelay = 0; |
-static const double s_initialDeferredRepaintDelayDuringLoading = 0; |
-static const double s_maxDeferredRepaintDelayDuringLoading = 0; |
-static const double s_deferredRepaintDelayIncrementDuringLoading = 0; |
-#endif |
- |
// The maximum number of updateWidgets iterations that should be done before returning. |
static const unsigned maxUpdateWidgetsIterations = 2; |
@@ -171,7 +149,6 @@ FrameView::FrameView(Frame* frame) |
, m_wasScrolledByUser(false) |
, m_inProgrammaticScroll(false) |
, m_safeToPropagateScrollToParent(true) |
- , m_deferredRepaintTimer(this, &FrameView::deferredRepaintTimerFired) |
, m_isTrackingRepaints(false) |
, m_scrollCorner(0) |
, m_shouldAutoSize(false) |
@@ -257,10 +234,6 @@ void FrameView::reset() |
m_safeToPropagateScrollToParent = true; |
m_lastViewportSize = IntSize(); |
m_lastZoomFactor = 1.0f; |
- m_repaintCount = 0; |
- m_repaintRects.clear(); |
- m_deferredRepaintDelay = s_initialDeferredRepaintDelayDuringLoading; |
- m_deferredRepaintTimer.stop(); |
m_isTrackingRepaints = false; |
m_trackedRepaintRects.clear(); |
m_lastPaintTime = 0; |
@@ -1741,8 +1714,6 @@ HostWindow* FrameView::hostWindow() const |
return &page->chrome(); |
} |
-const unsigned cRepaintRectUnionThreshold = 25; |
- |
void FrameView::repaintContentRectangle(const IntRect& r) |
{ |
ASSERT(!m_frame->ownerElement()); |
@@ -1753,31 +1724,6 @@ void FrameView::repaintContentRectangle(const IntRect& r) |
m_trackedRepaintRects.append(repaintRect); |
} |
- double delay = adjustedDeferredRepaintDelay(); |
- if (m_deferredRepaintTimer.isActive() || delay) { |
- IntRect paintRect = r; |
- if (clipsRepaints() && !paintsEntireContents()) |
- paintRect.intersect(visibleContentRect()); |
- if (paintRect.isEmpty()) |
- return; |
- if (m_repaintCount == cRepaintRectUnionThreshold) { |
- IntRect unionedRect; |
- for (unsigned i = 0; i < cRepaintRectUnionThreshold; ++i) |
- unionedRect.unite(pixelSnappedIntRect(m_repaintRects[i])); |
- m_repaintRects.clear(); |
- m_repaintRects.append(unionedRect); |
- } |
- if (m_repaintCount < cRepaintRectUnionThreshold) |
- m_repaintRects.append(paintRect); |
- else |
- m_repaintRects[0].unite(paintRect); |
- m_repaintCount++; |
- |
- startDeferredRepaintTimer(delay); |
- |
- return; |
- } |
- |
ScrollView::repaintContentRectangle(r); |
} |
@@ -1814,90 +1760,11 @@ void FrameView::scrollbarExistenceDidChange() |
} |
} |
-void FrameView::startDeferredRepaintTimer(double delay) |
-{ |
- if (m_deferredRepaintTimer.isActive()) |
- return; |
- |
- m_deferredRepaintTimer.startOneShot(delay); |
-} |
- |
void FrameView::handleLoadCompleted() |
{ |
// Once loading has completed, allow autoSize one last opportunity to |
// reduce the size of the frame. |
autoSizeIfEnabled(); |
- if (shouldUseLoadTimeDeferredRepaintDelay()) |
- return; |
- m_deferredRepaintDelay = s_normalDeferredRepaintDelay; |
- flushDeferredRepaints(); |
-} |
- |
-void FrameView::flushDeferredRepaints() |
-{ |
- if (!m_deferredRepaintTimer.isActive()) |
- return; |
- m_deferredRepaintTimer.stop(); |
- doDeferredRepaints(); |
-} |
- |
-void FrameView::doDeferredRepaints() |
-{ |
- unsigned size = m_repaintRects.size(); |
- for (unsigned i = 0; i < size; i++) { |
- ScrollView::repaintContentRectangle(pixelSnappedIntRect(m_repaintRects[i])); |
- } |
- m_repaintRects.clear(); |
- m_repaintCount = 0; |
- |
- updateDeferredRepaintDelayAfterRepaint(); |
-} |
- |
-bool FrameView::shouldUseLoadTimeDeferredRepaintDelay() const |
-{ |
- // Don't defer after the initial load of the page has been completed. |
- if (m_frame->tree().top()->document()->loadEventFinished()) |
- return false; |
- Document* document = m_frame->document(); |
- if (!document) |
- return false; |
- if (document->parsing()) |
- return true; |
- if (document->fetcher()->requestCount()) |
- return true; |
- return false; |
-} |
- |
-void FrameView::updateDeferredRepaintDelayAfterRepaint() |
-{ |
- if (!shouldUseLoadTimeDeferredRepaintDelay()) { |
- m_deferredRepaintDelay = s_normalDeferredRepaintDelay; |
- return; |
- } |
- double incrementedRepaintDelay = m_deferredRepaintDelay + s_deferredRepaintDelayIncrementDuringLoading; |
- m_deferredRepaintDelay = std::min(incrementedRepaintDelay, s_maxDeferredRepaintDelayDuringLoading); |
-} |
- |
-void FrameView::resetDeferredRepaintDelay() |
-{ |
- m_deferredRepaintDelay = 0; |
- if (m_deferredRepaintTimer.isActive()) { |
- m_deferredRepaintTimer.stop(); |
- doDeferredRepaints(); |
- } |
-} |
- |
-double FrameView::adjustedDeferredRepaintDelay() const |
-{ |
- if (!m_deferredRepaintDelay) |
- return 0; |
- double timeSinceLastPaint = currentTime() - m_lastPaintTime; |
- return max(0., m_deferredRepaintDelay - timeSinceLastPaint); |
-} |
- |
-void FrameView::deferredRepaintTimerFired(Timer<FrameView>*) |
-{ |
- doDeferredRepaints(); |
} |
void FrameView::layoutTimerFired(Timer<FrameView>*) |
@@ -2956,10 +2823,6 @@ void FrameView::updateLayoutAndStyleIfNeededRecursive() |
for (Vector<RefPtr<FrameView> >::iterator it = frameViews.begin(); it != end; ++it) |
(*it)->updateLayoutAndStyleIfNeededRecursive(); |
- // updateLayoutAndStyleIfNeededRecursive is called when we need to make sure style and layout are up-to-date before |
- // painting, so we need to flush out any deferred repaints too. |
- flushDeferredRepaints(); |
- |
// When seamless is on, child frame can mark parent frame dirty. In such case, child frame |
// needs to call layout on parent frame recursively. |
// This assert ensures that parent frames are clean, when child frames finished updating layout and style. |