From 909ece73212608ac6116f1c7adfe8375500f79a7 Mon Sep 17 00:00:00 2001 From: "andersca@apple.com" Date: Wed, 11 Sep 2013 18:39:09 +0000 Subject: [PATCH] Stop using deleteAllValues in SVG code https://bugs.webkit.org/show_bug.cgi?id=121172 Reviewed by Antti Koivisto. Use OwnPtr for values instead. * rendering/svg/RenderSVGResourceClipper.cpp: (WebCore::RenderSVGResourceClipper::~RenderSVGResourceClipper): (WebCore::RenderSVGResourceClipper::removeAllClientsFromCache): (WebCore::RenderSVGResourceClipper::removeClientFromCache): (WebCore::RenderSVGResourceClipper::applyClippingToContext): * rendering/svg/RenderSVGResourceClipper.h: * rendering/svg/RenderSVGResourceFilter.cpp: (WebCore::RenderSVGResourceFilter::~RenderSVGResourceFilter): (WebCore::RenderSVGResourceFilter::removeAllClientsFromCache): (WebCore::RenderSVGResourceFilter::removeClientFromCache): (WebCore::RenderSVGResourceFilter::applyResource): (WebCore::RenderSVGResourceFilter::postApplyResource): (WebCore::RenderSVGResourceFilter::primitiveAttributeChanged): * rendering/svg/RenderSVGResourceFilter.h: * rendering/svg/RenderSVGResourceMasker.cpp: (WebCore::RenderSVGResourceMasker::~RenderSVGResourceMasker): (WebCore::RenderSVGResourceMasker::removeAllClientsFromCache): (WebCore::RenderSVGResourceMasker::removeClientFromCache): (WebCore::RenderSVGResourceMasker::applyResource): * rendering/svg/RenderSVGResourceMasker.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155547 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- Source/WebCore/ChangeLog | 30 +++++++++++++++++++ .../svg/RenderSVGResourceClipper.cpp | 15 ++-------- .../rendering/svg/RenderSVGResourceClipper.h | 2 +- .../rendering/svg/RenderSVGResourceFilter.cpp | 28 ++++++----------- .../rendering/svg/RenderSVGResourceFilter.h | 2 +- .../rendering/svg/RenderSVGResourceMasker.cpp | 16 ++-------- .../rendering/svg/RenderSVGResourceMasker.h | 2 +- 7 files changed, 48 insertions(+), 47 deletions(-) diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index 7017d0ec535..c91521d2918 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,33 @@ +2013-09-11 Anders Carlsson + + Stop using deleteAllValues in SVG code + https://bugs.webkit.org/show_bug.cgi?id=121172 + + Reviewed by Antti Koivisto. + + Use OwnPtr for values instead. + + * rendering/svg/RenderSVGResourceClipper.cpp: + (WebCore::RenderSVGResourceClipper::~RenderSVGResourceClipper): + (WebCore::RenderSVGResourceClipper::removeAllClientsFromCache): + (WebCore::RenderSVGResourceClipper::removeClientFromCache): + (WebCore::RenderSVGResourceClipper::applyClippingToContext): + * rendering/svg/RenderSVGResourceClipper.h: + * rendering/svg/RenderSVGResourceFilter.cpp: + (WebCore::RenderSVGResourceFilter::~RenderSVGResourceFilter): + (WebCore::RenderSVGResourceFilter::removeAllClientsFromCache): + (WebCore::RenderSVGResourceFilter::removeClientFromCache): + (WebCore::RenderSVGResourceFilter::applyResource): + (WebCore::RenderSVGResourceFilter::postApplyResource): + (WebCore::RenderSVGResourceFilter::primitiveAttributeChanged): + * rendering/svg/RenderSVGResourceFilter.h: + * rendering/svg/RenderSVGResourceMasker.cpp: + (WebCore::RenderSVGResourceMasker::~RenderSVGResourceMasker): + (WebCore::RenderSVGResourceMasker::removeAllClientsFromCache): + (WebCore::RenderSVGResourceMasker::removeClientFromCache): + (WebCore::RenderSVGResourceMasker::applyResource): + * rendering/svg/RenderSVGResourceMasker.h: + 2013-09-10 Simon Fraser REGRESSION (143483): overflow:hidden doesn't quash big repaints from text-indent: -9999px diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp b/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp index 14710033cc3..57e94bddf95 100644 --- a/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp +++ b/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp @@ -60,20 +60,12 @@ RenderSVGResourceClipper::RenderSVGResourceClipper(SVGClipPathElement* node) RenderSVGResourceClipper::~RenderSVGResourceClipper() { - if (m_clipper.isEmpty()) - return; - - deleteAllValues(m_clipper); - m_clipper.clear(); } void RenderSVGResourceClipper::removeAllClientsFromCache(bool markForInvalidation) { m_clipBoundaries = FloatRect(); - if (!m_clipper.isEmpty()) { - deleteAllValues(m_clipper); - m_clipper.clear(); - } + m_clipper.clear(); markAllClientsForInvalidation(markForInvalidation ? LayoutAndBoundariesInvalidation : ParentOnlyInvalidation); } @@ -81,8 +73,7 @@ void RenderSVGResourceClipper::removeAllClientsFromCache(bool markForInvalidatio void RenderSVGResourceClipper::removeClientFromCache(RenderObject* client, bool markForInvalidation) { ASSERT(client); - if (m_clipper.contains(client)) - delete m_clipper.take(client); + m_clipper.remove(client); markClientForInvalidation(client, markForInvalidation ? BoundariesInvalidation : ParentOnlyInvalidation); } @@ -156,7 +147,7 @@ bool RenderSVGResourceClipper::applyClippingToContext(RenderObject* object, cons { bool missingClipperData = !m_clipper.contains(object); if (missingClipperData) - m_clipper.set(object, new ClipperData); + m_clipper.set(object, createOwned().release()); bool shouldCreateClipData = false; AffineTransform animatedLocalTransform = toSVGClipPathElement(element())->animatedLocalTransform(); diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceClipper.h b/Source/WebCore/rendering/svg/RenderSVGResourceClipper.h index 2277ba44a3b..aab3c2941e9 100644 --- a/Source/WebCore/rendering/svg/RenderSVGResourceClipper.h +++ b/Source/WebCore/rendering/svg/RenderSVGResourceClipper.h @@ -71,7 +71,7 @@ private: void calculateClipContentRepaintRect(); FloatRect m_clipBoundaries; - HashMap m_clipper; + HashMap> m_clipper; }; } diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp b/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp index 08d732cba58..b5b03769b13 100644 --- a/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp +++ b/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp @@ -65,19 +65,11 @@ RenderSVGResourceFilter::RenderSVGResourceFilter(SVGFilterElement* node) RenderSVGResourceFilter::~RenderSVGResourceFilter() { - if (m_filter.isEmpty()) - return; - - deleteAllValues(m_filter); - m_filter.clear(); } void RenderSVGResourceFilter::removeAllClientsFromCache(bool markForInvalidation) { - if (!m_filter.isEmpty()) { - deleteAllValues(m_filter); - m_filter.clear(); - } + m_filter.clear(); markAllClientsForInvalidation(markForInvalidation ? LayoutAndBoundariesInvalidation : ParentOnlyInvalidation); } @@ -90,7 +82,7 @@ void RenderSVGResourceFilter::removeClientFromCache(RenderObject* client, bool m if (filterData->savedContext) filterData->state = FilterData::MarkedForRemoval; else - delete m_filter.take(client); + m_filter.remove(client); } markClientForInvalidation(client, markForInvalidation ? BoundariesInvalidation : ParentOnlyInvalidation); @@ -155,7 +147,7 @@ bool RenderSVGResourceFilter::applyResource(RenderObject* object, RenderStyle*, return false; // Already built, or we're in a cycle, or we're marked for removal. Regardless, just do nothing more now. } - OwnPtr filterData(adoptPtr(new FilterData)); + auto filterData = createOwned(); FloatRect targetBoundingBox = object->objectBoundingBox(); SVGFilterElement* filterElement = toSVGFilterElement(element()); @@ -224,7 +216,7 @@ bool RenderSVGResourceFilter::applyResource(RenderObject* object, RenderStyle*, if (filterData->drawingRegion.isEmpty()) { ASSERT(!m_filter.contains(object)); filterData->savedContext = context; - m_filter.set(object, filterData.leakPtr()); + m_filter.set(object, filterData.release()); return false; } @@ -238,7 +230,7 @@ bool RenderSVGResourceFilter::applyResource(RenderObject* object, RenderStyle*, if (!SVGRenderingContext::createImageBuffer(filterData->drawingRegion, effectiveTransform, sourceGraphic, ColorSpaceLinearRGB, renderingMode)) { ASSERT(!m_filter.contains(object)); filterData->savedContext = context; - m_filter.set(object, filterData.leakPtr()); + m_filter.set(object, filterData.release()); return false; } @@ -254,7 +246,7 @@ bool RenderSVGResourceFilter::applyResource(RenderObject* object, RenderStyle*, context = sourceGraphicContext; ASSERT(!m_filter.contains(object)); - m_filter.set(object, filterData.leakPtr()); + m_filter.set(object, filterData.release()); return true; } @@ -271,7 +263,7 @@ void RenderSVGResourceFilter::postApplyResource(RenderObject* object, GraphicsCo switch (filterData->state) { case FilterData::MarkedForRemoval: - delete m_filter.take(object); + m_filter.remove(object); return; case FilterData::CycleDetected: @@ -338,12 +330,10 @@ FloatRect RenderSVGResourceFilter::resourceBoundingBox(RenderObject* object) void RenderSVGResourceFilter::primitiveAttributeChanged(RenderObject* object, const QualifiedName& attribute) { - HashMap::iterator it = m_filter.begin(); - HashMap::iterator end = m_filter.end(); SVGFilterPrimitiveStandardAttributes* primitve = static_cast(object->node()); - for (; it != end; ++it) { - FilterData* filterData = it->value; + for (auto it = m_filter.begin(), end = m_filter.end(); it != end; ++it) { + const auto &filterData = it->value; if (filterData->state != FilterData::Built) continue; diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h b/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h index 97b93043c08..09fbe2ac830 100644 --- a/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h +++ b/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h @@ -93,7 +93,7 @@ public: private: bool fitsInMaximumImageSize(const FloatSize&, FloatSize&); - HashMap m_filter; + HashMap> m_filter; }; inline RenderSVGResourceFilter* toRenderSVGFilter(RenderObject* object) diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp b/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp index dc102837b6e..20ffbd0d309 100644 --- a/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp +++ b/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp @@ -48,20 +48,12 @@ RenderSVGResourceMasker::RenderSVGResourceMasker(SVGMaskElement* node) RenderSVGResourceMasker::~RenderSVGResourceMasker() { - if (m_masker.isEmpty()) - return; - - deleteAllValues(m_masker); - m_masker.clear(); } void RenderSVGResourceMasker::removeAllClientsFromCache(bool markForInvalidation) { m_maskContentBoundaries = FloatRect(); - if (!m_masker.isEmpty()) { - deleteAllValues(m_masker); - m_masker.clear(); - } + m_masker.clear(); markAllClientsForInvalidation(markForInvalidation ? LayoutAndBoundariesInvalidation : ParentOnlyInvalidation); } @@ -69,9 +61,7 @@ void RenderSVGResourceMasker::removeAllClientsFromCache(bool markForInvalidation void RenderSVGResourceMasker::removeClientFromCache(RenderObject* client, bool markForInvalidation) { ASSERT(client); - - if (m_masker.contains(client)) - delete m_masker.take(client); + m_masker.remove(client); markClientForInvalidation(client, markForInvalidation ? BoundariesInvalidation : ParentOnlyInvalidation); } @@ -84,7 +74,7 @@ bool RenderSVGResourceMasker::applyResource(RenderObject* object, RenderStyle*, bool missingMaskerData = !m_masker.contains(object); if (missingMaskerData) - m_masker.set(object, new MaskerData); + m_masker.set(object, createOwned().release()); MaskerData* maskerData = m_masker.get(object); diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceMasker.h b/Source/WebCore/rendering/svg/RenderSVGResourceMasker.h index a88bb2f84bb..1331c51be4c 100644 --- a/Source/WebCore/rendering/svg/RenderSVGResourceMasker.h +++ b/Source/WebCore/rendering/svg/RenderSVGResourceMasker.h @@ -61,7 +61,7 @@ private: void calculateMaskContentRepaintRect(); FloatRect m_maskContentBoundaries; - HashMap m_masker; + HashMap> m_masker; }; } -- GitLab