Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 500c16dfca9aef5d2fb07e80839e3e1fb00167e2 https://github.com/WebKit/WebKit/commit/500c16dfca9aef5d2fb07e80839e3e1fb00167e2 Author: Said Abou-Hallawa <s...@apple.com> Date: 2025-03-25 (Tue, 25 Mar 2025)
Changed paths: M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayer.h M Source/WebCore/rendering/RenderLayerModelObject.cpp M Source/WebCore/rendering/RenderLayerModelObject.h M Source/WebCore/rendering/svg/RenderSVGGradientStop.cpp M Source/WebCore/rendering/svg/SVGRenderSupport.cpp M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGImage.cpp M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResource.cpp M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResource.h M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceClipper.cpp M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceClipper.h M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceContainer.cpp M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceContainer.h M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.cpp M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.h M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradient.cpp M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradient.h M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMarker.cpp M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMarker.h M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.cpp M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.h M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourcePattern.cpp M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourcePattern.h M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceSolidColor.h M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRoot.cpp M Source/WebCore/rendering/svg/legacy/SVGResources.cpp M Source/WebCore/rendering/svg/legacy/SVGResources.h M Source/WebCore/rendering/svg/legacy/SVGResourcesCache.cpp Log Message: ----------- A RELEASE_ASSERT() may fire because RenderLayer does nor clear its SVG clipPath data https://bugs.webkit.org/show_bug.cgi?id=290363 rdar://147410341 Reviewed by Simon Fraser. LegacyRenderSVGResourceClipper::applyClippingToContext() is called from RenderLayer::setupClipPath(). This function adds a new entry for the RenderLayer::renderer() in its m_clipperMap for caching the clipping data. This HashMap entry never gets deleted. RenderLayer::~RenderLayer() needs to clear its clipPath data to remove the entry that it added. The caching and the invalidation methods of all the SVG resources need to be renamed to allow removeClientFromCache() without having to invalidate it. LegacyRenderSVGResource needs to define four abstract methods: 1. removeClientFromCache(): Removes the renderer from the cache. 2. removeClientFromCacheAndMarkForInvalidation(): Remove the renderer and mark it for invalidation. 3. removeAllClientsFromCache(): Clears the cache. 4. removeAllClientsFromCacheAndMarkForInvalidationIfNeeded: Clears the cache and mark all the renderers for invalidation. * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::~RenderLayer): (WebCore::RenderLayer::setupClipPath): (WebCore::RenderLayer::clearLayerClipPath): * Source/WebCore/rendering/RenderLayer.h: * Source/WebCore/rendering/RenderLayerModelObject.cpp: (WebCore::RenderLayerModelObject::legacySVGClipperResourceFromStyle const): * Source/WebCore/rendering/RenderLayerModelObject.h: * Source/WebCore/rendering/svg/RenderSVGGradientStop.cpp: (WebCore::RenderSVGGradientStop::styleDidChange): * Source/WebCore/rendering/svg/SVGRenderSupport.cpp: (WebCore::invalidateResourcesOfChildren): * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGImage.cpp: (WebCore::LegacyRenderSVGImage::imageChanged): * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResource.cpp: (WebCore::LegacyRenderSVGResource::removeAllClientsFromCacheAndMarkForInvalidation): (WebCore::removeFromCacheAndInvalidateDependencies): (WebCore::LegacyRenderSVGResource::markForLayoutAndParentResourceInvalidationIfNeeded): (WebCore::LegacyRenderSVGResource::removeAllClientsFromCache): Deleted. * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResource.h: * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceClipper.cpp: (WebCore::LegacyRenderSVGResourceClipper::removeAllClientsFromCache): (WebCore::LegacyRenderSVGResourceClipper::removeClientFromCache): (WebCore::LegacyRenderSVGResourceClipper::removeAllClientsFromCacheIfNeeded): Deleted. * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceClipper.h: * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceContainer.cpp: (WebCore::LegacyRenderSVGResourceContainer::idChanged): (WebCore::LegacyRenderSVGResourceContainer::removeClientFromCacheAndMarkForInvalidation): (WebCore::LegacyRenderSVGResourceContainer::removeAllClientsFromCacheAndMarkForInvalidationIfNeeded): (WebCore::LegacyRenderSVGResourceContainer::markAllClientsForInvalidationIfNeeded): (WebCore::LegacyRenderSVGResourceContainer::removeClient): * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceContainer.h: * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.cpp: (WebCore::LegacyRenderSVGResourceFilter::removeAllClientsFromCache): (WebCore::LegacyRenderSVGResourceFilter::removeClientFromCache): (WebCore::LegacyRenderSVGResourceFilter::postApplyResource): (WebCore::LegacyRenderSVGResourceFilter::markFilterForRebuild): (WebCore::LegacyRenderSVGResourceFilter::removeAllClientsFromCacheIfNeeded): Deleted. * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.h: * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradient.cpp: (WebCore::LegacyRenderSVGResourceGradient::removeAllClientsFromCache): (WebCore::LegacyRenderSVGResourceGradient::removeAllClientsFromCacheAndMarkForInvalidationIfNeeded): (WebCore::LegacyRenderSVGResourceGradient::removeClientFromCache): (WebCore::LegacyRenderSVGResourceGradient::gradientDataForRenderer): (WebCore::LegacyRenderSVGResourceGradient::removeAllClientsFromCacheIfNeeded): Deleted. * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradient.h: * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMarker.cpp: (WebCore::LegacyRenderSVGResourceMarker::removeAllClientsFromCacheIfNeeded): Deleted. (WebCore::LegacyRenderSVGResourceMarker::removeClientFromCache): Deleted. * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMarker.h: * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.cpp: (WebCore::LegacyRenderSVGResourceMasker::removeAllClientsFromCache): (WebCore::LegacyRenderSVGResourceMasker::removeClientFromCache): (WebCore::LegacyRenderSVGResourceMasker::removeAllClientsFromCacheIfNeeded): Deleted. * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.h: * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourcePattern.cpp: (WebCore::LegacyRenderSVGResourcePattern::removeAllClientsFromCache): (WebCore::LegacyRenderSVGResourcePattern::removeAllClientsFromCacheAndMarkForInvalidationIfNeeded): (WebCore::LegacyRenderSVGResourcePattern::removeClientFromCache): (WebCore::LegacyRenderSVGResourcePattern::buildPattern): (WebCore::LegacyRenderSVGResourcePattern::removeAllClientsFromCacheIfNeeded): Deleted. * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourcePattern.h: * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceSolidColor.h: * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRoot.cpp: (WebCore::LegacyRenderSVGRoot::layout): * Source/WebCore/rendering/svg/legacy/SVGResources.cpp: (WebCore::SVGResources::removeClientFromCacheAndMarkForInvalidation const): (WebCore::SVGResources::resourceDestroyed): (WebCore::SVGResources::removeClientFromCache const): Deleted. * Source/WebCore/rendering/svg/legacy/SVGResources.h: * Source/WebCore/rendering/svg/legacy/SVGResourcesCache.cpp: (WebCore::SVGResourcesCache::clientLayoutChanged): (WebCore::SVGResourcesCache::clientDestroyed): Canonical link: https://commits.webkit.org/292667@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes