Title: [121708] trunk/Source/WebCore
- Revision
- 121708
- Author
- timothy_hor...@apple.com
- Date
- 2012-07-02 15:14:54 -0700 (Mon, 02 Jul 2012)
Log Message
Compositing layer sync should cause deferred repaints to be fired immediately
https://bugs.webkit.org/show_bug.cgi?id=90401
<rdar://problem/11792028>
Reviewed by Simon Fraser and Antti Koivisto.
If we sync compositing layers and allow the repaint to be deferred, there is time for a
visible flash to occur. Instead, stop the deferred repaint timer and repaint immediately.
No new tests, configuration and timing dependent.
* page/FrameView.cpp:
(WebCore::FrameView::syncCompositingStateForThisFrame):
(WebCore::FrameView::checkStopDelayingDeferredRepaints):
(WebCore::FrameView::stopDelayingDeferredRepaints): Split off from checkStopDelayingDeferredRepaints.
* page/FrameView.h:
(FrameView): Add stopDelayingDeferredRepaints.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (121707 => 121708)
--- trunk/Source/WebCore/ChangeLog 2012-07-02 21:47:42 UTC (rev 121707)
+++ trunk/Source/WebCore/ChangeLog 2012-07-02 22:14:54 UTC (rev 121708)
@@ -1,3 +1,23 @@
+2012-07-02 Tim Horton <timothy_hor...@apple.com>
+
+ Compositing layer sync should cause deferred repaints to be fired immediately
+ https://bugs.webkit.org/show_bug.cgi?id=90401
+ <rdar://problem/11792028>
+
+ Reviewed by Simon Fraser and Antti Koivisto.
+
+ If we sync compositing layers and allow the repaint to be deferred, there is time for a
+ visible flash to occur. Instead, stop the deferred repaint timer and repaint immediately.
+
+ No new tests, configuration and timing dependent.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::syncCompositingStateForThisFrame):
+ (WebCore::FrameView::checkStopDelayingDeferredRepaints):
+ (WebCore::FrameView::stopDelayingDeferredRepaints): Split off from checkStopDelayingDeferredRepaints.
+ * page/FrameView.h:
+ (FrameView): Add stopDelayingDeferredRepaints.
+
2012-07-02 Benjamin Poulain <bpoul...@apple.com>
Do not do any logging initialization when logging is disabled
Modified: trunk/Source/WebCore/page/FrameView.cpp (121707 => 121708)
--- trunk/Source/WebCore/page/FrameView.cpp 2012-07-02 21:47:42 UTC (rev 121707)
+++ trunk/Source/WebCore/page/FrameView.cpp 2012-07-02 22:14:54 UTC (rev 121708)
@@ -745,6 +745,10 @@
if (needsLayout())
return false;
+ // If we sync compositing layers and allow the repaint to be deferred, there is time for a
+ // visible flash to occur. Instead, stop the deferred repaint timer and repaint immediately.
+ stopDelayingDeferredRepaints();
+
root->compositor()->flushPendingLayerChanges(rootFrameForSync == m_frame);
return true;
@@ -1929,13 +1933,18 @@
void FrameView::checkStopDelayingDeferredRepaints()
{
- if (!m_deferredRepaintTimer.isActive())
- return;
-
Document* document = m_frame->document();
if (document && (document->parsing() || document->cachedResourceLoader()->requestCount()))
return;
+
+ stopDelayingDeferredRepaints();
+}
+void FrameView::stopDelayingDeferredRepaints()
+{
+ if (!m_deferredRepaintTimer.isActive())
+ return;
+
m_deferredRepaintTimer.stop();
doDeferredRepaints();
Modified: trunk/Source/WebCore/page/FrameView.h (121707 => 121708)
--- trunk/Source/WebCore/page/FrameView.h 2012-07-02 21:47:42 UTC (rev 121707)
+++ trunk/Source/WebCore/page/FrameView.h 2012-07-02 22:14:54 UTC (rev 121708)
@@ -209,6 +209,7 @@
void beginDeferredRepaints();
void endDeferredRepaints();
void checkStopDelayingDeferredRepaints();
+ void stopDelayingDeferredRepaints();
void startDeferredRepaintTimer(double delay);
void resetDeferredRepaintDelay();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes