From ba092f1cd519a34ce7df586c8cfafa91d2a336bc Mon Sep 17 00:00:00 2001 From: Ojan Vafai Date: Thu, 26 Feb 2015 11:04:53 -0800 Subject: [PATCH] Remove dead code from RenderLayer and inline filter methods. Inline a couple methods that are only called from one place and remove a bunch of dead code. R=abarth@chromium.org Review URL: https://codereview.chromium.org/961553003 --- engine/core/rendering/RenderBox.cpp | 2 +- engine/core/rendering/RenderLayer.cpp | 91 +++++---------------------- engine/core/rendering/RenderLayer.h | 9 --- 3 files changed, 16 insertions(+), 86 deletions(-) diff --git a/engine/core/rendering/RenderBox.cpp b/engine/core/rendering/RenderBox.cpp index 4d4a814a9..c47ab38c4 100644 --- a/engine/core/rendering/RenderBox.cpp +++ b/engine/core/rendering/RenderBox.cpp @@ -845,7 +845,7 @@ void RenderBox::paintLayerContents(GraphicsContext* context, const LayerPainting layer()->clipToRect(localPaintingInfo, context, contentRect); - FilterEffectRendererHelper filterPainter(layer()->filterRenderer() && layer()->paintsWithFilters()); + FilterEffectRendererHelper filterPainter(layer()->filterRenderer() && hasFilter()); if (filterPainter.haveFilterEffect()) { ASSERT(layer()->filterInfo()); diff --git a/engine/core/rendering/RenderLayer.cpp b/engine/core/rendering/RenderLayer.cpp index aaf7bd00e..041407529 100644 --- a/engine/core/rendering/RenderLayer.cpp +++ b/engine/core/rendering/RenderLayer.cpp @@ -107,20 +107,6 @@ String RenderLayer::debugName() const return renderer()->debugName(); } -bool RenderLayer::paintsWithFilters() const -{ - // FIXME(sky): Remove - return renderer()->hasFilter(); -} - -bool RenderLayer::requiresFullLayerImageForFilters() const -{ - if (!paintsWithFilters()) - return false; - FilterEffectRenderer* filter = filterRenderer(); - return filter ? filter->hasFilterThatMovesPixels() : false; -} - LayoutSize RenderLayer::subpixelAccumulation() const { return m_subpixelAccumulation; @@ -730,25 +716,6 @@ bool RenderLayer::shouldBeSelfPaintingLayer() const return m_layerType == NormalLayer; } -bool RenderLayer::hasNonEmptyChildRenderers() const -{ - // Some HTML can cause whitespace text nodes to have renderers, like: - //
- // - //
- // so test for 0x0 RenderTexts here - for (RenderObject* child = renderer()->slowFirstChild(); child; child = child->nextSibling()) { - if (!child->hasLayer()) { - if (child->isRenderInline() || !child->isBox()) - return true; - - if (toRenderBox(child)->width() > 0 || toRenderBox(child)->height() > 0) - return true; - } - } - return false; -} - bool RenderLayer::hasBoxDecorationsOrBackground() const { return renderer()->style()->hasBoxDecorations() || renderer()->style()->hasBackground(); @@ -759,49 +726,11 @@ bool RenderLayer::hasVisibleBoxDecorations() const return hasBoxDecorationsOrBackground(); } -bool RenderLayer::isVisuallyNonEmpty() const -{ - if (hasNonEmptyChildRenderers()) - return true; - - if (renderer()->isReplaced()) - return true; - - if (hasVisibleBoxDecorations()) - return true; - - return false; -} - void RenderLayer::updateFilters(const RenderStyle* oldStyle, const RenderStyle* newStyle) { if (!newStyle->hasFilter() && (!oldStyle || !oldStyle->hasFilter())) return; - updateOrRemoveFilterClients(); - updateOrRemoveFilterEffectRenderer(); -} - -void RenderLayer::styleChanged(StyleDifference diff, const RenderStyle* oldStyle) -{ - m_stackingNode->updateIsNormalFlowOnly(); - m_stackingNode->updateStackingNodesAfterStyleChange(oldStyle); - - // Overlay scrollbars can make this layer self-painting so we need - // to recompute the bit once scrollbars have been updated. - m_isSelfPaintingLayer = shouldBeSelfPaintingLayer(); - - updateTransform(oldStyle, renderer()->style()); - updateFilters(oldStyle, renderer()->style()); -} - -FilterOperations RenderLayer::computeFilterOperations(const RenderStyle* style) -{ - return style->filter(); -} - -void RenderLayer::updateOrRemoveFilterClients() -{ if (!hasFilter()) { removeFilterInfoIfNeeded(); return; @@ -811,14 +740,11 @@ void RenderLayer::updateOrRemoveFilterClients() ensureFilterInfo()->updateReferenceFilterClients(renderer()->style()->filter()); else if (hasFilterInfo()) filterInfo()->removeReferenceFilterClients(); -} -void RenderLayer::updateOrRemoveFilterEffectRenderer() -{ // FilterEffectRenderer is only used to render the filters in software mode, // so we always need to run updateOrRemoveFilterEffectRenderer after the composited // mode might have changed for this layer. - if (!paintsWithFilters()) { + if (!renderer()->hasFilter()) { // Don't delete the whole filter info here, because we might use it // for loading CSS shader files. if (RenderLayerFilterInfo* filterInfo = this->filterInfo()) @@ -838,8 +764,21 @@ void RenderLayer::updateOrRemoveFilterEffectRenderer() // If the filter fails to build, remove it from the layer. It will still attempt to // go through regular processing (e.g. compositing), but never apply anything. - if (!filterInfo->renderer()->build(renderer(), computeFilterOperations(renderer()->style()))) + if (!filterInfo->renderer()->build(renderer(), renderer()->style()->filter())) filterInfo->setRenderer(nullptr); } +void RenderLayer::styleChanged(StyleDifference diff, const RenderStyle* oldStyle) +{ + m_stackingNode->updateIsNormalFlowOnly(); + m_stackingNode->updateStackingNodesAfterStyleChange(oldStyle); + + // Overlay scrollbars can make this layer self-painting so we need + // to recompute the bit once scrollbars have been updated. + m_isSelfPaintingLayer = shouldBeSelfPaintingLayer(); + + updateTransform(oldStyle, renderer()->style()); + updateFilters(oldStyle, renderer()->style()); +} + } // namespace blink diff --git a/engine/core/rendering/RenderLayer.h b/engine/core/rendering/RenderLayer.h index 76ebf529b..3916819a7 100644 --- a/engine/core/rendering/RenderLayer.h +++ b/engine/core/rendering/RenderLayer.h @@ -124,8 +124,6 @@ public: bool hasBoxDecorationsOrBackground() const; bool hasVisibleBoxDecorations() const; - // Returns true if this layer has visible content (ignoring any child layers). - bool isVisuallyNonEmpty() const; // True if this layer container renderers that paint. bool hasNonEmptyChildRenderers() const; @@ -181,9 +179,6 @@ public: // Only safe to call from RenderBox::destroyLayer() void operator delete(void*); - FilterOperations computeFilterOperations(const RenderStyle*); - bool paintsWithFilters() const; - bool requiresFullLayerImageForFilters() const; FilterEffectRenderer* filterRenderer() const { RenderLayerFilterInfo* filterInfo = this->filterInfo(); @@ -213,8 +208,6 @@ public: return isRootLayer() || layerRenderer->isPositioned() || hasTransform(); } - void updateOrRemoveFilterEffectRenderer(); - void clipToRect(const LayerPaintingInfo&, GraphicsContext*, const ClipRect&, BorderRadiusClippingRule = IncludeSelfForBorderRadius); void restoreClip(GraphicsContext*, const LayoutRect& paintDirtyRect, const ClipRect&); @@ -239,8 +232,6 @@ private: void dirty3DTransformedDescendantStatus(); - void updateOrRemoveFilterClients(); - LayerType m_layerType; // Self-painting layer is an optimization where we avoid the heavy RenderLayer painting -- GitLab