| Index: third_party/WebKit/Source/core/paint/PaintLayer.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/PaintLayer.cpp b/third_party/WebKit/Source/core/paint/PaintLayer.cpp
|
| index c96f42c49d496e00d9ca3538e287babc7d8d072d..02f40fbc8e3eec86471d78e74fd9cdc5292aa228 100644
|
| --- a/third_party/WebKit/Source/core/paint/PaintLayer.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/PaintLayer.cpp
|
| @@ -149,7 +149,6 @@ PaintLayer::PaintLayer(LayoutBoxModelObject* layoutObject, PaintLayerType type)
|
| , m_3DTransformedDescendantStatusDirty(true)
|
| , m_has3DTransformedDescendant(false)
|
| , m_containsDirtyOverlayScrollbars(false)
|
| - , m_hasFilterInfo(false)
|
| , m_needsAncestorDependentCompositingInputsUpdate(true)
|
| , m_needsDescendantDependentCompositingInputsUpdate(true)
|
| , m_childNeedsCompositingInputsUpdate(true)
|
| @@ -193,8 +192,6 @@ PaintLayer::~PaintLayer()
|
| scrollingCoordinator->willDestroyLayer(this);
|
| }
|
|
|
| - removeFilterInfoIfNeeded();
|
| -
|
| if (groupedMapping()) {
|
| DisableCompositingQueryAsserts disabler;
|
| setGroupedMapping(0, InvalidateLayerAndRemoveFromMapping);
|
| @@ -2614,17 +2611,23 @@ FilterOperations PaintLayer::computeBackdropFilterOperations(const ComputedStyle
|
| return computeFilterOperationsHandleReferenceFilters(style.backdropFilter(), style.effectiveZoom(), enclosingNode());
|
| }
|
|
|
| -void PaintLayer::updateOrRemoveFilterClients()
|
| +PaintLayerFilterInfo& PaintLayer::ensureFilterInfo()
|
| {
|
| - if (!hasFilter()) {
|
| - removeFilterInfoIfNeeded();
|
| - return;
|
| - }
|
| + PaintLayerRareData& rareData = ensureRareData();
|
| + if (!rareData.filterInfo)
|
| + rareData.filterInfo = adoptPtr(new PaintLayerFilterInfo(this));
|
| + return *rareData.filterInfo;
|
| +}
|
|
|
| - if (layoutObject()->style()->filter().hasReferenceFilter())
|
| - ensureFilterInfo()->updateReferenceFilterClients(layoutObject()->style()->filter());
|
| - else if (hasFilterInfo())
|
| +void PaintLayer::updateOrRemoveFilterClients()
|
| +{
|
| + if (!hasFilter() && m_rareData) {
|
| + m_rareData->filterInfo = nullptr;
|
| + } else if (layoutObject()->style()->filter().hasReferenceFilter()) {
|
| + ensureFilterInfo().updateReferenceFilterClients(layoutObject()->style()->filter());
|
| + } else if (filterInfo()) {
|
| filterInfo()->clearFilterReferences();
|
| + }
|
| }
|
|
|
| FilterEffectBuilder* PaintLayer::updateFilterEffectBuilder() const
|
| @@ -2683,7 +2686,7 @@ void PaintLayer::updateOrRemoveFilterEffectBuilder()
|
| return;
|
| }
|
|
|
| - ensureFilterInfo()->setBuilder(nullptr);
|
| + ensureFilterInfo().setBuilder(nullptr);
|
| }
|
|
|
| void PaintLayer::filterNeedsPaintInvalidation()
|
|
|