 Chromium Code Reviews
 Chromium Code Reviews Issue 23785014:
  [SVG] Resources should be laid out in dependecy order.  (Closed) 
  Base URL: svn://svn.chromium.org/blink/trunk
    
  
    Issue 23785014:
  [SVG] Resources should be laid out in dependecy order.  (Closed) 
  Base URL: svn://svn.chromium.org/blink/trunk| 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) | 
| 
pdr.
2013/09/23 22:26:02
Should these be asserts?
 
f(malita)
2013/09/23 23:20:33
m_isInLayout is used for runtime layout cycle dete
 | 
| + return; | 
| + | 
| + TemporaryChange<bool> inLayoutChange(m_isInLayout, true); | 
| + | 
| // Invalidate all resources if our layout changed. | 
| if (everHadLayout() && selfNeedsLayout()) | 
| - RenderSVGRoot::addResourceForClientInvalidation(this); | 
| + removeAllClientsFromCache(); | 
| RenderSVGHiddenContainer::layout(); | 
| } |