Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(619)

Unified Diff: third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp

Issue 2453033004: Make sure to always reset the cached filter in ReferenceFilterOperation (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
diff --git a/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp b/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
index 1100612276d80668306422a37ed03b616e2b28c6..77b99c825d2df639ed17b430763d369a932dd3b8 100644
--- a/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
+++ b/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
@@ -148,16 +148,17 @@ FilterEffect* FilterEffectBuilder::buildFilterEffect(
case FilterOperation::REFERENCE: {
ReferenceFilterOperation& referenceOperation =
toReferenceFilterOperation(*filterOperation);
- if (Filter* referenceFilter =
- buildReferenceFilter(referenceOperation, previousEffect)) {
+ Filter* referenceFilter =
+ buildReferenceFilter(referenceOperation, previousEffect);
+ if (referenceFilter) {
+ effect = referenceFilter->lastEffect();
Stephen White 2016/10/27 17:10:51 I'm not sure I understand why we now grab the last
fs 2016/10/28 08:46:31 That's what we did previously as well (I only reor
Stephen White 2016/10/28 14:58:06 Oh right; I misread.
fs 2016/10/31 09:19:12 I'd expect something along those lines to be the r
// TODO(fs): This is essentially only needed for the
// side-effects (mapRect). The filter differs from the one
// computed just above in what the SourceGraphic is, and how
// it's connected to the filter-chain.
- referenceOperation.setFilter(
- buildReferenceFilter(referenceOperation, nullptr));
- effect = referenceFilter->lastEffect();
+ referenceFilter = buildReferenceFilter(referenceOperation, nullptr);
}
+ referenceOperation.setFilter(referenceFilter);
break;
}
case FilterOperation::GRAYSCALE: {
@@ -308,7 +309,6 @@ CompositorFilterOperations FilterEffectBuilder::buildFilterOperations(
Filter* referenceFilter =
buildReferenceFilter(referenceOperation, nullptr);
if (referenceFilter && referenceFilter->lastEffect()) {
- referenceOperation.setFilter(referenceFilter);
SkiaImageFilterBuilder::populateSourceGraphicImageFilters(
referenceFilter->getSourceGraphic(), nullptr, currentColorSpace);
@@ -317,6 +317,7 @@ CompositorFilterOperations FilterEffectBuilder::buildFilterOperations(
filters.appendReferenceFilter(
SkiaImageFilterBuilder::build(filterEffect, currentColorSpace));
}
+ referenceOperation.setFilter(referenceFilter);
break;
}
case FilterOperation::GRAYSCALE:
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698