summaryrefslogtreecommitdiffstats
path: root/WebCore/rendering/RenderSVGResourceGradient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/rendering/RenderSVGResourceGradient.cpp')
-rw-r--r--WebCore/rendering/RenderSVGResourceGradient.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/WebCore/rendering/RenderSVGResourceGradient.cpp b/WebCore/rendering/RenderSVGResourceGradient.cpp
index ce51369..73b2ab6 100644
--- a/WebCore/rendering/RenderSVGResourceGradient.cpp
+++ b/WebCore/rendering/RenderSVGResourceGradient.cpp
@@ -43,28 +43,32 @@ RenderSVGResourceGradient::RenderSVGResourceGradient(SVGGradientElement* node)
RenderSVGResourceGradient::~RenderSVGResourceGradient()
{
+ if (m_gradient.isEmpty())
+ return;
+
deleteAllValues(m_gradient);
m_gradient.clear();
}
void RenderSVGResourceGradient::invalidateClients()
{
- const HashMap<RenderObject*, GradientData*>::const_iterator end = m_gradient.end();
- for (HashMap<RenderObject*, GradientData*>::const_iterator it = m_gradient.begin(); it != end; ++it)
- markForLayoutAndResourceInvalidation(it->first, false);
+ if (!m_gradient.isEmpty()) {
+ deleteAllValues(m_gradient);
+ m_gradient.clear();
+ }
- deleteAllValues(m_gradient);
- m_gradient.clear();
+ markAllClientsForInvalidation(RepaintInvalidation);
}
-void RenderSVGResourceGradient::invalidateClient(RenderObject* object)
+void RenderSVGResourceGradient::invalidateClient(RenderObject* client)
{
- ASSERT(object);
- if (!m_gradient.contains(object))
- return;
+ ASSERT(client);
+ ASSERT(client->selfNeedsLayout());
+
+ if (m_gradient.contains(client))
+ delete m_gradient.take(client);
- delete m_gradient.take(object);
- markForLayoutAndResourceInvalidation(object, false);
+ markClientForInvalidation(client, RepaintInvalidation);
}
#if PLATFORM(CG)