From 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Tue, 27 Jun 2017 06:07:23 +0000 Subject: webkitgtk-2.16.5 --- Source/WebKit2/Shared/WebRenderLayer.cpp | 34 +++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 12 deletions(-) (limited to 'Source/WebKit2/Shared/WebRenderLayer.cpp') diff --git a/Source/WebKit2/Shared/WebRenderLayer.cpp b/Source/WebKit2/Shared/WebRenderLayer.cpp index f4baad331..9cc10eca4 100644 --- a/Source/WebKit2/Shared/WebRenderLayer.cpp +++ b/Source/WebKit2/Shared/WebRenderLayer.cpp @@ -32,9 +32,11 @@ #include #include #include +#include #include #include #include +#include #include using namespace WebCore; @@ -45,25 +47,25 @@ PassRefPtr WebRenderLayer::create(WebPage* page) { Frame* mainFrame = page->mainFrame(); if (!mainFrame) - return 0; + return nullptr; if (!mainFrame->loader().client().hasHTMLView()) - return 0; + return nullptr; RenderView* contentRenderer = mainFrame->contentRenderer(); if (!contentRenderer) - return 0; + return nullptr; RenderLayer* rootLayer = contentRenderer->layer(); if (!rootLayer) - return 0; + return nullptr; return adoptRef(new WebRenderLayer(rootLayer)); } -PassRefPtr WebRenderLayer::create(PassRefPtr renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType type, WebCore::IntRect absoluteBoundingBox, PassRefPtr negativeZOrderList, PassRefPtr normalFlowList, PassRefPtr positiveZOrderList) +PassRefPtr WebRenderLayer::create(PassRefPtr renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType type, WebCore::IntRect absoluteBoundingBox, double backingStoreMemoryEstimate, PassRefPtr negativeZOrderList, PassRefPtr normalFlowList, PassRefPtr positiveZOrderList, PassRefPtr frameContentsLayer) { - return adoptRef(new WebRenderLayer(renderer, isReflection, isClipping, isClipped, type, absoluteBoundingBox, negativeZOrderList, normalFlowList, positiveZOrderList)); + return adoptRef(new WebRenderLayer(renderer, isReflection, isClipping, isClipped, type, absoluteBoundingBox, backingStoreMemoryEstimate, negativeZOrderList, normalFlowList, positiveZOrderList, frameContentsLayer)); } PassRefPtr WebRenderLayer::createArrayFromLayerList(Vector* list) @@ -77,7 +79,7 @@ PassRefPtr WebRenderLayer::createArrayFromLayerList(Vectorrenderer()); m_isReflection = layer->isReflection(); -#if USE(ACCELERATED_COMPOSITING) if (layer->isComposited()) { RenderLayerBacking* backing = layer->backing(); m_isClipping = backing->hasClippingLayer(); @@ -104,32 +105,41 @@ WebRenderLayer::WebRenderLayer(RenderLayer* layer) m_compositingLayerType = Container; break; } + + m_backingStoreMemoryEstimate = backing->backingStoreMemoryEstimate(); } else { -#endif m_isClipping = false; m_isClipped = false; m_compositingLayerType = None; -#if USE(ACCELERATED_COMPOSITING) + m_backingStoreMemoryEstimate = 0; } -#endif m_absoluteBoundingBox = layer->absoluteBoundingBox(); m_negativeZOrderList = createArrayFromLayerList(layer->negZOrderList()); m_normalFlowList = createArrayFromLayerList(layer->normalFlowList()); m_positiveZOrderList = createArrayFromLayerList(layer->posZOrderList()); + + if (is(layer->renderer())) { + if (Document* contentDocument = downcast(layer->renderer()).frameOwnerElement().contentDocument()) { + if (RenderView* view = contentDocument->renderView()) + m_frameContentsLayer = adoptRef(new WebRenderLayer(view->layer())); + } + } } -WebRenderLayer::WebRenderLayer(PassRefPtr renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType type, WebCore::IntRect absoluteBoundingBox, PassRefPtr negativeZOrderList, PassRefPtr normalFlowList, PassRefPtr positiveZOrderList) +WebRenderLayer::WebRenderLayer(PassRefPtr renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType type, WebCore::IntRect absoluteBoundingBox, double backingStoreMemoryEstimate, PassRefPtr negativeZOrderList, PassRefPtr normalFlowList, PassRefPtr positiveZOrderList, PassRefPtr frameContentsLayer) : m_renderer(renderer) , m_isReflection(isReflection) , m_isClipping(isClipping) , m_isClipped(isClipped) , m_compositingLayerType(type) , m_absoluteBoundingBox(absoluteBoundingBox) + , m_backingStoreMemoryEstimate(backingStoreMemoryEstimate) , m_negativeZOrderList(negativeZOrderList) , m_normalFlowList(normalFlowList) , m_positiveZOrderList(positiveZOrderList) + , m_frameContentsLayer(frameContentsLayer) { } -- cgit v1.2.1