Chromium Code Reviews| Index: Source/web/WebViewImpl.cpp |
| diff --git a/Source/web/WebViewImpl.cpp b/Source/web/WebViewImpl.cpp |
| index 1cdb62d6aa28f411514f57116393205350dad0ec..26a09b16e69f04ac2fb81b06534c395b10842e11 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" |
| #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,24 @@ 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(); |
| + rootScrollLayer->platformLayer()->setScrollClipLayer(m_rootLayer); |
|
enne (OOO)
2013/09/12 18:51:21
I don't think the root layer is the clip layer for
wjmaclean
2013/09/12 19:01:56
Oops, you're right ... I'll fix this.
|
| + 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); |