| Index: Source/core/rendering/svg/RenderSVGResourceContainer.cpp
|
| diff --git a/Source/core/rendering/svg/RenderSVGResourceContainer.cpp b/Source/core/rendering/svg/RenderSVGResourceContainer.cpp
|
| index 575266e1a0b35db6f3f611e8d59f6d5684f86b06..d0ff572c4df39129bc24b753370d23cb731fd028 100644
|
| --- a/Source/core/rendering/svg/RenderSVGResourceContainer.cpp
|
| +++ b/Source/core/rendering/svg/RenderSVGResourceContainer.cpp
|
| @@ -23,11 +23,12 @@
|
|
|
| #include "core/rendering/RenderLayer.h"
|
| #include "core/rendering/RenderView.h"
|
| -#include "core/rendering/svg/RenderSVGRoot.h"
|
| #include "core/rendering/svg/SVGRenderingContext.h"
|
| #include "core/rendering/svg/SVGResourcesCache.h"
|
| #include "core/svg/SVGGraphicsElement.h"
|
|
|
| +#include "wtf/TemporaryChange.h"
|
| +
|
| namespace WebCore {
|
|
|
| static inline SVGDocumentExtensions* svgExtensionsFromElement(SVGElement* element)
|
| @@ -41,6 +42,7 @@ RenderSVGResourceContainer::RenderSVGResourceContainer(SVGElement* node)
|
| , m_id(node->getIdAttribute())
|
| , m_registered(false)
|
| , m_isInvalidating(false)
|
| + , m_isInLayout(false)
|
| {
|
| }
|
|
|
| @@ -52,9 +54,14 @@ RenderSVGResourceContainer::~RenderSVGResourceContainer()
|
|
|
| void RenderSVGResourceContainer::layout()
|
| {
|
| + if (!needsLayout() || m_isInLayout)
|
| + return;
|
| +
|
| + TemporaryChange<bool> inLayoutChange(m_isInLayout, true);
|
| +
|
| // Invalidate all resources if our layout changed.
|
| if (everHadLayout() && selfNeedsLayout())
|
| - RenderSVGRoot::addResourceForClientInvalidation(this);
|
| + removeAllClientsFromCache();
|
|
|
| RenderSVGHiddenContainer::layout();
|
| }
|
|
|