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