void SVGResourcesCache::resourceDestroyed(RenderSVGResourceContainer& resource) { SVGResourcesCache* cache = resourcesCacheFromRenderObject(resource); // The resource itself may have clients, that need to be notified. cache->removeResourcesFromRenderer(resource); for (auto it = cache->m_cache.begin(), end = cache->m_cache.end(); it != end; ++it) { it->value->resourceDestroyed(resource); // Mark users of destroyed resources as pending resolution based on the id of the old resource. Element& resourceElement = resource.element(); Element* clientElement = toElement(it->key->node()); SVGDocumentExtensions* extensions = clientElement->document().accessSVGExtensions(); extensions->addPendingResource(resourceElement.getIdAttribute(), clientElement); } }
void SVGResourcesCache::resourceDestroyed(RenderSVGResourceContainer* resource) { ASSERT(resource); SVGResourcesCache* cache = resourcesCacheFromRenderObject(resource); // The resource itself may have clients, that need to be notified. cache->removeResourcesFromRenderObject(resource); HashMap<RenderObject*, SVGResources*>::iterator end = cache->m_cache.end(); for (HashMap<RenderObject*, SVGResources*>::iterator it = cache->m_cache.begin(); it != end; ++it) { it->second->resourceDestroyed(resource); // Mark users of destroyed resources as pending resolution based on the id of the old resource. Element* resourceElement = toElement(resource->node()); SVGStyledElement* clientElement = toSVGStyledElement(it->first->node()); SVGDocumentExtensions* extensions = clientElement->document()->accessSVGExtensions(); extensions->addPendingResource(resourceElement->fastGetAttribute(HTMLNames::idAttr), clientElement); } }
static inline void registerPendingResource(SVGDocumentExtensions& extensions, const AtomicString& id, SVGElement& element) { extensions.addPendingResource(id, &element); }