Title: [112175] trunk/Source/WebKit2
Revision
112175
Author
[email protected]
Date
2012-03-26 16:42:17 -0700 (Mon, 26 Mar 2012)

Log Message

Never remove root compositing layers in the web process
https://bugs.webkit.org/show_bug.cgi?id=82255
<rdar://problem/11058521>

Reviewed by Sam Weinig.

Since we never leave accelerated compositing mode when using tiled drawing, we should
never remove root compositing layers in the web process.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (112174 => 112175)


--- trunk/Source/WebKit2/ChangeLog	2012-03-26 23:39:27 UTC (rev 112174)
+++ trunk/Source/WebKit2/ChangeLog	2012-03-26 23:42:17 UTC (rev 112175)
@@ -1,3 +1,17 @@
+2012-03-26  Anders Carlsson  <[email protected]>
+
+        Never remove root compositing layers in the web process
+        https://bugs.webkit.org/show_bug.cgi?id=82255
+        <rdar://problem/11058521>
+
+        Reviewed by Sam Weinig.
+
+        Since we never leave accelerated compositing mode when using tiled drawing, we should
+        never remove root compositing layers in the web process.
+
+        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+        (WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer):
+
 2012-03-26  Rafael Brandao  <[email protected]>
 
         [Qt][WK2] default families are not set in QWebPreferences

Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm (112174 => 112175)


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm	2012-03-26 23:39:27 UTC (rev 112174)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm	2012-03-26 23:42:17 UTC (rev 112175)
@@ -110,6 +110,13 @@
 {
     CALayer *rootCompositingLayer = graphicsLayer ? graphicsLayer->platformLayer() : nil;
 
+    // Since we'll always be in accelerated compositing mode, the only time that layer will be nil
+    // is when the WKView is removed from its containing window. In that case, the layer will already be
+    // removed from the layer tree hierarchy over in the UI process, so there's no reason to remove it locally.
+    // In addition, removing the layer here will cause flashes when switching between tabs.
+    if (!rootCompositingLayer)
+        return;
+
     if (m_layerTreeStateIsFrozen) {
         m_pendingRootCompositingLayer = rootCompositingLayer;
         return;
@@ -325,19 +332,16 @@
 
 void TiledCoreAnimationDrawingArea::setRootCompositingLayer(CALayer *layer)
 {
+    ASSERT(layer);
     ASSERT(!m_layerTreeStateIsFrozen);
 
     [CATransaction begin];
     [CATransaction setDisableActions:YES];
 
-    if (!layer)
-        m_rootLayer.get().sublayers = nil;
-    else {
-        m_rootLayer.get().sublayers = [NSArray arrayWithObject:layer];
+    m_rootLayer.get().sublayers = [NSArray arrayWithObject:layer];
 
-        if (m_pageOverlayLayer)
-            [m_rootLayer.get() addSublayer:m_pageOverlayLayer->platformLayer()];
-    }
+    if (m_pageOverlayLayer)
+        [m_rootLayer.get() addSublayer:m_pageOverlayLayer->platformLayer()];
 
     [CATransaction commit];
 }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to