mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
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
This commit is contained in:
parent
57f15eb89c
commit
ba092f1cd5
@ -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());
|
||||
|
||||
@ -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:
|
||||
// <div>
|
||||
// <img src=...>
|
||||
// </div>
|
||||
// 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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user