Index: Source/web/WebViewImpl.cpp |
diff --git a/Source/web/WebViewImpl.cpp b/Source/web/WebViewImpl.cpp |
index 1cdb62d6aa28f411514f57116393205350dad0ec..cbea808bd24e97ab4d5f1595bb1f24ec004178e0 100644 |
--- a/Source/web/WebViewImpl.cpp |
+++ b/Source/web/WebViewImpl.cpp |
@@ -31,6 +31,7 @@ |
#include "config.h" |
#include "WebViewImpl.h" |
+#include "core/rendering/RenderLayerCompositor.h" |
jamesr
2013/09/12 20:35:03
could you put this with the rest of the core/... i
wjmaclean
2013/09/12 20:42:54
Done.
|
#include "public/platform/Platform.h" |
#include "public/platform/WebDragData.h" |
#include "public/platform/WebFloatPoint.h" |
@@ -3803,11 +3804,9 @@ void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer) |
if (layer) { |
m_rootGraphicsLayer = m_pinchViewports->rootGraphicsLayer(); |
m_rootLayer = m_pinchViewports->rootGraphicsLayer()->platformLayer(); |
- m_pinchViewports->registerViewportLayersWithTreeView(m_layerTreeView); |
} else { |
m_rootGraphicsLayer = 0; |
m_rootLayer = 0; |
- m_pinchViewports->clearViewportLayersForTreeView(m_layerTreeView); |
} |
} else { |
m_rootGraphicsLayer = layer; |
@@ -3817,10 +3816,23 @@ void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer) |
setIsAcceleratedCompositingActive(layer); |
if (m_layerTreeView) { |
- if (m_rootLayer) |
+ if (m_rootLayer) { |
m_layerTreeView->setRootLayer(*m_rootLayer); |
- else |
+ // We register viewport layers here since there may not be a layer |
+ // tree view prior to this point. |
+ if (m_pinchViewports) { |
+ m_pinchViewports->registerViewportLayersWithTreeView(m_layerTreeView); |
+ } else { |
+ GraphicsLayer* rootScrollLayer = compositor()->scrollLayer(); |
+ m_layerTreeView->registerViewportLayers(m_rootLayer, rootScrollLayer->platformLayer(), 0); |
+ } |
+ } else { |
m_layerTreeView->clearRootLayer(); |
+ if (m_pinchViewports) |
+ m_pinchViewports->clearViewportLayersForTreeView(m_layerTreeView); |
+ else |
+ m_layerTreeView->clearViewportLayers(); |
+ } |
} |
suppressInvalidations(false); |