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

Side by Side Diff: third_party/WebKit/Source/core/svg/graphics/filters/SVGFilterBuilder.cpp

Issue 2846593008: Proactively dispose image filters for SVG filter chains (Closed)
Patch Set: Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> 2 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org>
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 // reason, which in turn mean that certain types of invalidation will not 86 // reason, which in turn mean that certain types of invalidation will not
87 // work (the LayoutObject -> FilterEffect mapping will not be defined). 87 // work (the LayoutObject -> FilterEffect mapping will not be defined).
88 if (object) 88 if (object)
89 effect_renderer_.insert(object, effect); 89 effect_renderer_.insert(object, effect);
90 } 90 }
91 91
92 void SVGFilterGraphNodeMap::InvalidateDependentEffects(FilterEffect* effect) { 92 void SVGFilterGraphNodeMap::InvalidateDependentEffects(FilterEffect* effect) {
93 if (!effect->HasImageFilter()) 93 if (!effect->HasImageFilter())
94 return; 94 return;
95 95
96 effect->ClearResult(); 96 effect->DisposeImageFilters();
97 97
98 FilterEffectSet& effect_references = this->EffectReferences(effect); 98 FilterEffectSet& effect_references = this->EffectReferences(effect);
99 for (FilterEffect* effect_reference : effect_references) 99 for (FilterEffect* effect_reference : effect_references)
100 InvalidateDependentEffects(effect_reference); 100 InvalidateDependentEffects(effect_reference);
101 } 101 }
102 102
103 DEFINE_TRACE(SVGFilterGraphNodeMap) { 103 DEFINE_TRACE(SVGFilterGraphNodeMap) {
104 visitor->Trace(effect_renderer_); 104 visitor->Trace(effect_renderer_);
105 visitor->Trace(effect_references_); 105 visitor->Trace(effect_references_);
106 } 106 }
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 return named_effect; 221 return named_effect;
222 } 222 }
223 223
224 if (last_effect_) 224 if (last_effect_)
225 return last_effect_.Get(); 225 return last_effect_.Get();
226 226
227 return builtin_effects_.at(FilterInputKeywords::GetSourceGraphic()); 227 return builtin_effects_.at(FilterInputKeywords::GetSourceGraphic());
228 } 228 }
229 229
230 } // namespace blink 230 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698