Index: Source/core/rendering/svg/SVGResourcesCache.cpp |
diff --git a/Source/core/rendering/svg/SVGResourcesCache.cpp b/Source/core/rendering/svg/SVGResourcesCache.cpp |
index a77894d5059213170ccaee41396400a66c89ebc7..c4f5e89ef114a76b6be2062ee8372a5b653ad3dd 100644 |
--- a/Source/core/rendering/svg/SVGResourcesCache.cpp |
+++ b/Source/core/rendering/svg/SVGResourcesCache.cpp |
@@ -21,6 +21,7 @@ |
#include "core/rendering/svg/SVGResourcesCache.h" |
#include "core/HTMLNames.h" |
+#include "core/rendering/RenderLayer.h" |
#include "core/rendering/svg/RenderSVGResourceContainer.h" |
#include "core/rendering/svg/SVGResources.h" |
#include "core/rendering/svg/SVGResourcesCycleSolver.h" |
@@ -117,11 +118,14 @@ void SVGResourcesCache::clientStyleChanged(RenderObject* renderer, StyleDifferen |
{ |
ASSERT(renderer); |
ASSERT(renderer->node()); |
- ASSERT(renderer->node()->isSVGElement()); |
if (!diff.hasDifference() || !renderer->parent()) |
return; |
+ // If the renderer has a filter, make sure RenderLayer::updateFilters gets called. |
+ if (renderer->hasFilter()) |
+ renderer->enclosingLayer()->styleChanged(diff, newStyle); |
+ |
// In this case the proper SVGFE*Element will decide whether the modified CSS properties require a relayout or paintInvalidation. |
if (renderer->isSVGResourceFilterPrimitive() && !diff.needsLayout()) |
return; |