Index: Source/web/WebViewImpl.cpp |
diff --git a/Source/web/WebViewImpl.cpp b/Source/web/WebViewImpl.cpp |
index 1cdb62d6aa28f411514f57116393205350dad0ec..689f275b165de2487df4f5c49b26160d1e948674 100644 |
--- a/Source/web/WebViewImpl.cpp |
+++ b/Source/web/WebViewImpl.cpp |
@@ -155,6 +155,7 @@ |
#include "core/platform/graphics/ImageBuffer.h" |
#include "core/platform/graphics/chromium/LayerPainterChromium.h" |
#include "core/platform/graphics/gpu/SharedGraphicsContext3D.h" |
+#include "core/rendering/RenderLayerCompositor.h" |
#include "core/rendering/RenderView.h" |
#include "core/rendering/RenderWidget.h" |
#include "core/rendering/TextAutosizer.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); |