Title: [160420] branches/safari-537.74-branch/Source/WebKit/mac
Revision
160420
Author
[email protected]
Date
2013-12-11 03:34:08 -0800 (Wed, 11 Dec 2013)

Log Message

Merged r157279.  <rdar://problem/15560450>

Modified Paths

Diff

Modified: branches/safari-537.74-branch/Source/WebKit/mac/ChangeLog (160419 => 160420)


--- branches/safari-537.74-branch/Source/WebKit/mac/ChangeLog	2013-12-11 10:54:06 UTC (rev 160419)
+++ branches/safari-537.74-branch/Source/WebKit/mac/ChangeLog	2013-12-11 11:34:08 UTC (rev 160420)
@@ -1,3 +1,28 @@
+2013-12-11  Lucas Forschler  <[email protected]>
+
+        Merge r157279
+
+    2013-10-10  Simon Fraser  <[email protected]>
+
+            Always force layout before flushing compositing layers
+            https://bugs.webkit.org/show_bug.cgi?id=122626
+
+            Reviewed by Tim Horton.
+
+            [m_webView _flushCompositingChanges] only actually flushes compositing
+            layers if the FrameView does not need layout (FrameView::flushCompositingStateForThisFrame()
+            returns in this case). In this situation, flushLayers() does actually try
+            to force a layout, but on some platforms it's possible for something else
+            to dirty layout before the runloop observer fires again. This can result
+            in flushLayers() never actually managing to flush, which stalls visual
+            updates.
+
+            Fix by always calling -viewWillDraw (which updates layout) before flushing
+            layers. This now matches WebKit2 behavior.
+
+            * WebView/WebView.mm:
+            (LayerFlushController::flushLayers):
+
 2013-10-24  Lucas Forschler  <[email protected]>
 
         Merge r154647

Modified: branches/safari-537.74-branch/Source/WebKit/mac/WebView/WebView.mm (160419 => 160420)


--- branches/safari-537.74-branch/Source/WebKit/mac/WebView/WebView.mm	2013-12-11 10:54:06 UTC (rev 160419)
+++ branches/safari-537.74-branch/Source/WebKit/mac/WebView/WebView.mm	2013-12-11 11:34:08 UTC (rev 160420)
@@ -6447,6 +6447,8 @@
     if (viewsNeedDisplay)
         return false;
 
+    [m_webView _viewWillDrawInternal];
+
     if ([m_webView _flushCompositingChanges]) {
         // AppKit may have disabled screen updates, thinking an upcoming window flush will re-enable them.
         // In case setNeedsDisplayInRect() has prevented the window from needing to be flushed, re-enable screen
@@ -6457,10 +6459,6 @@
         return true;
     }
 
-    // Since the WebView does not need display, -viewWillDraw will not be called. Perform pending layout now,
-    // so that the layers draw with up-to-date layout. 
-    [m_webView _viewWillDrawInternal];
-
     return false;
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to