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

Unified Diff: Source/core/rendering/svg/RenderSVGResource.cpp

Issue 669153002: Relocate markForLayoutAndParentResourceInvalidation (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Drop boundsChanged. Created 6 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
Index: Source/core/rendering/svg/RenderSVGResource.cpp
diff --git a/Source/core/rendering/svg/RenderSVGResource.cpp b/Source/core/rendering/svg/RenderSVGResource.cpp
index fe48accaef85d15062265fbc3931047cb16961fa..450bb9ec8a88109f6358fa537f556637a36ef0d4 100644
--- a/Source/core/rendering/svg/RenderSVGResource.cpp
+++ b/Source/core/rendering/svg/RenderSVGResource.cpp
@@ -23,9 +23,8 @@
#include "config.h"
#include "core/rendering/svg/RenderSVGResource.h"
-#include "core/rendering/svg/RenderSVGResourceClipper.h"
-#include "core/rendering/svg/RenderSVGResourceFilter.h"
-#include "core/rendering/svg/RenderSVGResourceMasker.h"
+#include "core/rendering/style/RenderStyle.h"
+#include "core/rendering/svg/RenderSVGResourceContainer.h"
#include "core/rendering/svg/SVGResources.h"
#include "core/rendering/svg/SVGResourcesCache.h"
#include "platform/graphics/GraphicsContext.h"
@@ -190,70 +189,4 @@ SVGPaintDescription RenderSVGResource::requestPaintDescription(const RenderObjec
return requestPaint(renderer, style, resourceMode);
}
-static inline void removeFromCacheAndInvalidateDependencies(RenderObject* object, bool needsLayout)
-{
- ASSERT(object);
- if (SVGResources* resources = SVGResourcesCache::cachedResourcesForRenderObject(object)) {
- if (RenderSVGResourceFilter* filter = resources->filter())
- filter->removeClientFromCache(object);
-
- if (RenderSVGResourceMasker* masker = resources->masker())
- masker->removeClientFromCache(object);
-
- if (RenderSVGResourceClipper* clipper = resources->clipper())
- clipper->removeClientFromCache(object);
- }
-
- if (!object->node() || !object->node()->isSVGElement())
- return;
- SVGElementSet* dependencies = toSVGElement(object->node())->setOfIncomingReferences();
- if (!dependencies)
- return;
-
- // We allow cycles in SVGDocumentExtensions reference sets in order to avoid expensive
- // reference graph adjustments on changes, so we need to break possible cycles here.
- // This strong reference is safe, as it is guaranteed that this set will be emptied
- // at the end of recursion.
- typedef WillBeHeapHashSet<RawPtrWillBeMember<SVGElement> > SVGElementSet;
- DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<SVGElementSet>, invalidatingDependencies, (adoptPtrWillBeNoop(new SVGElementSet)));
-
- SVGElementSet::iterator end = dependencies->end();
- for (SVGElementSet::iterator it = dependencies->begin(); it != end; ++it) {
- if (RenderObject* renderer = (*it)->renderer()) {
- if (UNLIKELY(!invalidatingDependencies->add(*it).isNewEntry)) {
- // Reference cycle: we are in process of invalidating this dependant.
- continue;
- }
-
- RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer, needsLayout);
- invalidatingDependencies->remove(*it);
- }
- }
-}
-
-void RenderSVGResource::markForLayoutAndParentResourceInvalidation(RenderObject* object, bool needsLayout)
-{
- ASSERT(object);
- ASSERT(object->node());
-
- if (needsLayout && !object->documentBeingDestroyed())
- object->setNeedsLayoutAndFullPaintInvalidation();
-
- removeFromCacheAndInvalidateDependencies(object, needsLayout);
-
- // Invalidate resources in ancestor chain, if needed.
- RenderObject* current = object->parent();
- while (current) {
- removeFromCacheAndInvalidateDependencies(current, needsLayout);
-
- if (current->isSVGResourceContainer()) {
- // This will process the rest of the ancestors.
- toRenderSVGResourceContainer(current)->removeAllClientsFromCache();
- break;
- }
-
- current = current->parent();
- }
-}
-
}
« no previous file with comments | « Source/core/rendering/svg/RenderSVGResource.h ('k') | Source/core/rendering/svg/RenderSVGResourceContainer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698