Changeset 137463 in webkit


Ignore:
Timestamp:
Dec 12, 2012 7:00:23 AM (11 years ago)
Author:
senorblanco@chromium.org
Message:

Unreviewed, rolling out r136975.
http://trac.webkit.org/changeset/136975
https://bugs.webkit.org/show_bug.cgi?id=90405

Correctness issues.

Source/WebCore:

  • dom/Element.cpp:
  • dom/Element.h:

(Element):

  • dom/ElementRareData.h:

(ElementRareData):
(WebCore::ElementRareData::ElementRareData):

  • platform/graphics/texmap/TextureMapperImageBuffer.cpp:

(WebCore::BitmapTextureImageBuffer::applyFilters):

  • rendering/FilterEffectRenderer.cpp:

(WebCore::createCustomFilterEffect):
(WebCore::FilterEffectRenderer::buildReferenceFilter):
(WebCore::FilterEffectRenderer::build):

  • rendering/FilterEffectRenderer.h:

(FilterEffectRenderer):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::updateOrRemoveFilterEffectRenderer):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::willBeDestroyed):

  • rendering/svg/RenderSVGResourceContainer.cpp:

(WebCore::RenderSVGResourceContainer::registerResource):

  • rendering/svg/SVGResources.cpp:

(WebCore::SVGResources::buildCachedResources):

  • rendering/svg/SVGResourcesCache.cpp:

(WebCore::SVGResourcesCache::addResourcesFromRenderObject):
(WebCore::SVGResourcesCache::clientStyleChanged):
(WebCore::SVGResourcesCache::resourceDestroyed):

  • svg/SVGDocumentExtensions.cpp:

(WebCore::SVGDocumentExtensions::addPendingResource):
(WebCore::SVGDocumentExtensions::isElementPendingResources):
(WebCore::SVGDocumentExtensions::isElementPendingResource):
(WebCore::SVGDocumentExtensions::removeElementFromPendingResources):
(WebCore::SVGDocumentExtensions::removeElementFromPendingResourcesForRemoval):

  • svg/SVGDocumentExtensions.h:

(WebCore):
(SVGDocumentExtensions):

  • svg/SVGElement.cpp:

(WebCore::SVGElement::hasPendingResources):
(WebCore):
(WebCore::SVGElement::setHasPendingResources):
(WebCore::SVGElement::clearHasPendingResourcesIfPossible):

  • svg/SVGElement.h:

(SVGElement):
(WebCore::SVGElement::buildPendingResource):

  • svg/SVGElementRareData.h:

(WebCore::SVGElementRareData::SVGElementRareData):
(WebCore::SVGElementRareData::hasPendingResources):
(WebCore::SVGElementRareData::setHasPendingResources):
(SVGElementRareData):

  • svg/SVGStyledElement.cpp:

(WebCore::SVGStyledElement::buildPendingResourcesIfNeeded):

LayoutTests:

  • css3/filters/effect-reference-after-expected.txt: Removed.
  • css3/filters/effect-reference-after.html: Removed.
  • css3/filters/effect-reference-delete-crash-expected.txt: Removed.
  • css3/filters/effect-reference-delete-crash.html: Removed.
  • css3/filters/effect-reference-delete-expected.txt: Removed.
  • css3/filters/effect-reference-delete.html: Removed.
  • css3/filters/effect-reference-rename-expected.txt: Removed.
  • css3/filters/effect-reference-rename.html: Removed.
  • css3/filters/effect-reference-reset-style-delete-crash-expected.txt: Removed.
  • css3/filters/effect-reference-reset-style-delete-crash.html: Removed.
  • css3/filters/script-tests/effect-reference-delete-crash.js: Removed.
  • css3/filters/script-tests/effect-reference-reset-style-delete-crash.js: Removed.
  • platform/chromium-linux/css3/filters/effect-reference-after-expected.png: Removed.
  • platform/chromium-linux/css3/filters/effect-reference-delete-expected.png: Removed.
  • platform/chromium-linux/css3/filters/effect-reference-rename-expected.png: Removed.
  • svg/filters/filter-cycle-expected.html: Removed.
  • svg/filters/filter-cycle.html: Removed.
Location:
trunk
Files:
17 deleted
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r137462 r137463  
     12012-12-12  Stephen White  <senorblanco@chromium.org>
     2
     3        Unreviewed, rolling out r136975.
     4        http://trac.webkit.org/changeset/136975
     5        https://bugs.webkit.org/show_bug.cgi?id=90405
     6
     7        Correctness issues.
     8
     9        * css3/filters/effect-reference-after-expected.txt: Removed.
     10        * css3/filters/effect-reference-after.html: Removed.
     11        * css3/filters/effect-reference-delete-crash-expected.txt: Removed.
     12        * css3/filters/effect-reference-delete-crash.html: Removed.
     13        * css3/filters/effect-reference-delete-expected.txt: Removed.
     14        * css3/filters/effect-reference-delete.html: Removed.
     15        * css3/filters/effect-reference-rename-expected.txt: Removed.
     16        * css3/filters/effect-reference-rename.html: Removed.
     17        * css3/filters/effect-reference-reset-style-delete-crash-expected.txt: Removed.
     18        * css3/filters/effect-reference-reset-style-delete-crash.html: Removed.
     19        * css3/filters/script-tests/effect-reference-delete-crash.js: Removed.
     20        * css3/filters/script-tests/effect-reference-reset-style-delete-crash.js: Removed.
     21        * platform/chromium-linux/css3/filters/effect-reference-after-expected.png: Removed.
     22        * platform/chromium-linux/css3/filters/effect-reference-delete-expected.png: Removed.
     23        * platform/chromium-linux/css3/filters/effect-reference-rename-expected.png: Removed.
     24        * svg/filters/filter-cycle-expected.html: Removed.
     25        * svg/filters/filter-cycle.html: Removed.
     26
    1272012-12-12  Stephen White  <senorblanco@chromium.org>
    228
  • trunk/Source/WebCore/ChangeLog

    r137460 r137463  
     12012-12-12  Stephen White  <senorblanco@chromium.org>
     2
     3        Unreviewed, rolling out r136975.
     4        http://trac.webkit.org/changeset/136975
     5        https://bugs.webkit.org/show_bug.cgi?id=90405
     6
     7        Correctness issues.
     8
     9        * dom/Element.cpp:
     10        * dom/Element.h:
     11        (Element):
     12        * dom/ElementRareData.h:
     13        (ElementRareData):
     14        (WebCore::ElementRareData::ElementRareData):
     15        * platform/graphics/texmap/TextureMapperImageBuffer.cpp:
     16        (WebCore::BitmapTextureImageBuffer::applyFilters):
     17        * rendering/FilterEffectRenderer.cpp:
     18        (WebCore::createCustomFilterEffect):
     19        (WebCore::FilterEffectRenderer::buildReferenceFilter):
     20        (WebCore::FilterEffectRenderer::build):
     21        * rendering/FilterEffectRenderer.h:
     22        (FilterEffectRenderer):
     23        * rendering/RenderLayer.cpp:
     24        (WebCore::RenderLayer::updateOrRemoveFilterEffectRenderer):
     25        * rendering/RenderObject.cpp:
     26        (WebCore::RenderObject::willBeDestroyed):
     27        * rendering/svg/RenderSVGResourceContainer.cpp:
     28        (WebCore::RenderSVGResourceContainer::registerResource):
     29        * rendering/svg/SVGResources.cpp:
     30        (WebCore::SVGResources::buildCachedResources):
     31        * rendering/svg/SVGResourcesCache.cpp:
     32        (WebCore::SVGResourcesCache::addResourcesFromRenderObject):
     33        (WebCore::SVGResourcesCache::clientStyleChanged):
     34        (WebCore::SVGResourcesCache::resourceDestroyed):
     35        * svg/SVGDocumentExtensions.cpp:
     36        (WebCore::SVGDocumentExtensions::addPendingResource):
     37        (WebCore::SVGDocumentExtensions::isElementPendingResources):
     38        (WebCore::SVGDocumentExtensions::isElementPendingResource):
     39        (WebCore::SVGDocumentExtensions::removeElementFromPendingResources):
     40        (WebCore::SVGDocumentExtensions::removeElementFromPendingResourcesForRemoval):
     41        * svg/SVGDocumentExtensions.h:
     42        (WebCore):
     43        (SVGDocumentExtensions):
     44        * svg/SVGElement.cpp:
     45        (WebCore::SVGElement::hasPendingResources):
     46        (WebCore):
     47        (WebCore::SVGElement::setHasPendingResources):
     48        (WebCore::SVGElement::clearHasPendingResourcesIfPossible):
     49        * svg/SVGElement.h:
     50        (SVGElement):
     51        (WebCore::SVGElement::buildPendingResource):
     52        * svg/SVGElementRareData.h:
     53        (WebCore::SVGElementRareData::SVGElementRareData):
     54        (WebCore::SVGElementRareData::hasPendingResources):
     55        (WebCore::SVGElementRareData::setHasPendingResources):
     56        (SVGElementRareData):
     57        * svg/SVGStyledElement.cpp:
     58        (WebCore::SVGStyledElement::buildPendingResourcesIfNeeded):
     59
    1602012-12-12  Stephen White  <senorblanco@chromium.org>
    261
  • trunk/Source/WebCore/dom/Element.cpp

    r137406 r137463  
    26902690}
    26912691
    2692 #if ENABLE(SVG)
    2693 bool Element::hasPendingResources() const
    2694 {
    2695     return hasRareData() && elementRareData()->hasPendingResources();
    2696 }
    2697 
    2698 void Element::setHasPendingResources()
    2699 {
    2700     ensureElementRareData()->setHasPendingResources(true);
    2701 }
    2702 
    2703 void Element::clearHasPendingResources()
    2704 {
    2705     ensureElementRareData()->setHasPendingResources(false);
    2706 }
    2707 #endif
    2708 
    27092692} // namespace WebCore
  • trunk/Source/WebCore/dom/Element.h

    r137406 r137463  
    427427#if ENABLE(SVG)
    428428    virtual bool childShouldCreateRenderer(const NodeRenderingContext&) const;
    429     bool hasPendingResources() const;
    430     void setHasPendingResources();
    431     void clearHasPendingResources();
    432     virtual void buildPendingResource() { };
    433429#endif
    434430   
  • trunk/Source/WebCore/dom/ElementRareData.h

    r137459 r137463  
    107107    void setSavedLayerScrollOffset(IntSize size) { m_savedLayerScrollOffset = size; }
    108108
    109     bool hasPendingResources() const { return m_hasPendingResources; }
    110     void setHasPendingResources(bool has) { m_hasPendingResources = has; }
    111 
    112109private:
    113110    // Many fields are in NodeRareData for better packing.
     
    125122    IntSize m_savedLayerScrollOffset;
    126123
    127 #if ENABLE(SVG)
    128     bool m_hasPendingResources : 1;
    129 #endif
    130124private:
    131125    void releasePseudoElement(PseudoElement*);
     
    142136    , m_generatedBefore(0)
    143137    , m_generatedAfter(0)
    144 #if ENABLE(SVG)
    145     , m_hasPendingResources(false)
    146 #endif
    147138{
    148139}
  • trunk/Source/WebCore/platform/graphics/texmap/TextureMapperImageBuffer.cpp

    r136975 r137463  
    149149    renderer->setSourceImageRect(FloatRect(FloatPoint::zero(), contentTexture.size()));
    150150
    151     // The renderer parameter is only needed for CSS shaders and reference filters.
    152     renderer->build(0 /*renderer */, filters);
     151    // The document parameter is only needed for CSS shaders.
     152    renderer->build(0 /*document */, filters);
    153153    renderer->allocateBackingStoreIfNeeded();
    154154    GraphicsContext* context = renderer->inputContext();
  • trunk/Source/WebCore/rendering/FilterEffectRenderer.cpp

    r137055 r137463  
    8989static PassRefPtr<FECustomFilter> createCustomFilterEffect(Filter* filter, Document* document, ValidatedCustomFilterOperation* operation)
    9090{
    91     if (!document)
    92         return 0;
    93 
    9491    CustomFilterGlobalContext* globalContext = document->renderView()->customFilterGlobalContext();
    9592    globalContext->prepareContextIfNeeded(document->view()->hostWindow());
     
    126123}
    127124
    128 PassRefPtr<FilterEffect> FilterEffectRenderer::buildReferenceFilter(RenderObject* renderer, PassRefPtr<FilterEffect> previousEffect, ReferenceFilterOperation* filterOperation)
     125PassRefPtr<FilterEffect> FilterEffectRenderer::buildReferenceFilter(Document* document, PassRefPtr<FilterEffect> previousEffect, ReferenceFilterOperation* filterOperation)
    129126{
    130127#if ENABLE(SVG)
    131     if (!renderer)
    132         return 0;
    133 
    134     Document* document = renderer->document();
    135     ASSERT(document);
    136 
    137128    CachedSVGDocumentReference* cachedSVGDocumentReference = filterOperation->cachedSVGDocumentReference();
    138129    CachedSVGDocument* cachedSVGDocument = cachedSVGDocumentReference ? cachedSVGDocumentReference->document() : 0;
     
    147138
    148139    Element* filter = document->getElementById(filterOperation->fragment());
    149     if (!filter) {
    150         // Although we did not find the referenced filter, it might exist later
    151         // in the document
    152         document->accessSVGExtensions()->addPendingResource(filterOperation->fragment(), toElement(renderer->node()));
     140    if (!filter)
    153141        return 0;
    154     }
    155142
    156143    RefPtr<FilterEffect> effect;
     
    189176}
    190177
    191 bool FilterEffectRenderer::build(RenderObject* renderer, const FilterOperations& operations)
    192 {
     178bool FilterEffectRenderer::build(Document* document, const FilterOperations& operations)
     179{
     180#if !ENABLE(CSS_SHADERS) || !USE(3D_GRAPHICS)
     181    UNUSED_PARAM(document);
     182#endif
     183
    193184#if ENABLE(CSS_SHADERS)
    194185    m_hasCustomShaderFilter = false;
     
    210201        case FilterOperation::REFERENCE: {
    211202            ReferenceFilterOperation* referenceOperation = static_cast<ReferenceFilterOperation*>(filterOperation);
    212             effect = buildReferenceFilter(renderer, previousEffect, referenceOperation);
     203            effect = buildReferenceFilter(document, previousEffect, referenceOperation);
    213204            referenceOperation->setFilterEffect(effect);
    214205            break;
     
    353344        case FilterOperation::VALIDATED_CUSTOM: {
    354345            ValidatedCustomFilterOperation* customFilterOperation = static_cast<ValidatedCustomFilterOperation*>(filterOperation);
    355             Document* document = renderer ? renderer->document() : 0;
    356346            effect = createCustomFilterEffect(this, document, customFilterOperation);
    357347            if (effect)
  • trunk/Source/WebCore/rendering/FilterEffectRenderer.h

    r137055 r137463  
    102102    ImageBuffer* output() const { return lastEffect()->asImageBuffer(); }
    103103
    104     bool build(RenderObject* renderer, const FilterOperations&);
    105     PassRefPtr<FilterEffect> buildReferenceFilter(RenderObject* renderer, PassRefPtr<FilterEffect> previousEffect, ReferenceFilterOperation*);
     104    bool build(Document*, const FilterOperations&);
     105    PassRefPtr<FilterEffect> buildReferenceFilter(Document*, PassRefPtr<FilterEffect> previousEffect, ReferenceFilterOperation*);
    106106    bool updateBackingStoreRect(const FloatRect& filterRect);
    107107    void allocateBackingStoreIfNeeded();
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r137108 r137463  
    54095409    // If the filter fails to build, remove it from the layer. It will still attempt to
    54105410    // go through regular processing (e.g. compositing), but never apply anything.
    5411     if (!filterInfo->renderer()->build(renderer(), computeFilterOperations(renderer()->style())))
     5411    if (!filterInfo->renderer()->build(renderer()->document(), computeFilterOperations(renderer()->style())))
    54125412        filterInfo->setRenderer(0);
    54135413}
  • trunk/Source/WebCore/rendering/RenderObject.cpp

    r137336 r137463  
    8383#include "RenderSVGResourceContainer.h"
    8484#include "SVGRenderSupport.h"
    85 #include "SVGResourcesCache.h"
    8685#endif
    8786
     
    23792378    animation()->cancelAnimations(this);
    23802379
    2381 #if ENABLE(SVG)
    2382     SVGResourcesCache::clientDestroyed(this);
    2383 #endif
    2384 
    23852380    remove();
    23862381
  • trunk/Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp

    r136975 r137463  
    185185    for (SVGDocumentExtensions::SVGPendingElements::const_iterator it = clients->begin(); it != end; ++it) {
    186186        ASSERT((*it)->hasPendingResources());
    187         extensions->clearHasPendingResourcesIfPossible(*it);
     187        (*it)->clearHasPendingResourcesIfPossible();
    188188        RenderObject* renderer = (*it)->renderer();
    189189        if (!renderer)
  • trunk/Source/WebCore/rendering/svg/SVGResources.cpp

    r137460 r137463  
    191191    Node* node = object->node();
    192192    ASSERT(node);
    193     if (!node->isSVGElement()) {
    194         Document* document = object->document();
    195         ASSERT(document);
    196 
    197         if (!style->hasFilter())
    198             return false;
    199 
    200         AtomicString id(style->filterResource());
    201         return setFilter(getRenderSVGResourceById<RenderSVGResourceFilter>(document, id));
    202     }
    203 
    204193    ASSERT(node->isSVGElement());
    205194
  • trunk/Source/WebCore/rendering/svg/SVGResourcesCache.cpp

    r136975 r137463  
    2222
    2323#if ENABLE(SVG)
    24 #include "Element.h"
    2524#include "HTMLNames.h"
    26 #include "Node.h"
    2725#include "RenderSVGResourceContainer.h"
    2826#include "SVGDocumentExtensions.h"
     
    6159    m_cache.set(object, resources);
    6260
    63     ASSERT(object->node());
    6461    // Run cycle-detection _afterwards_, so self-references can be caught as well.
    6562    SVGResourcesCycleSolver solver(object, resources);
     
    147144
    148145    RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer, false);
    149 
    150     ASSERT(renderer->node());
    151     if (!renderer->node()->isSVGElement())
    152         renderer->node()->setNeedsStyleRecalc(SyntheticStyleChange);
    153146}
    154147
     
    210203        // Mark users of destroyed resources as pending resolution based on the id of the old resource.
    211204        Element* resourceElement = toElement(resource->node());
    212         Element* clientElement = toElement(it->key->node());
     205        SVGStyledElement* clientElement = toSVGStyledElement(it->key->node());
    213206        SVGDocumentExtensions* extensions = clientElement->document()->accessSVGExtensions();
    214207
  • trunk/Source/WebCore/svg/SVGDocumentExtensions.cpp

    r137318 r137463  
    2828#include "DOMWindow.h"
    2929#include "Document.h"
    30 #include "Element.h"
    3130#include "EventListener.h"
    3231#include "Frame.h"
     
    150149}
    151150
    152 void SVGDocumentExtensions::addPendingResource(const AtomicString& id, Element* element)
     151void SVGDocumentExtensions::addPendingResource(const AtomicString& id, SVGElement* element)
    153152{
    154153    ASSERT(element);
     
    177176}
    178177
    179 bool SVGDocumentExtensions::isElementPendingResources(Element* element) const
     178bool SVGDocumentExtensions::isElementPendingResources(SVGElement* element) const
    180179{
    181180    // This algorithm takes time proportional to the number of pending resources and need not.
     
    195194}
    196195
    197 bool SVGDocumentExtensions::isElementPendingResource(Element* element, const AtomicString& id) const
     196bool SVGDocumentExtensions::isElementPendingResource(SVGElement* element, const AtomicString& id) const
    198197{
    199198    ASSERT(element);
     
    205204}
    206205
    207 void SVGDocumentExtensions::clearHasPendingResourcesIfPossible(Element* element)
    208 {
    209     if (!isElementPendingResources(element))
    210         element->clearHasPendingResources();
    211 }
    212 
    213 void SVGDocumentExtensions::removeElementFromPendingResources(Element* element)
     206void SVGDocumentExtensions::removeElementFromPendingResources(SVGElement* element)
    214207{
    215208    ASSERT(element);
     
    229222        }
    230223
    231         clearHasPendingResourcesIfPossible(element);
     224        element->clearHasPendingResourcesIfPossible();
    232225
    233226        // We use the removePendingResource function here because it deals with set lifetime correctly.
     
    282275}
    283276
    284 Element* SVGDocumentExtensions::removeElementFromPendingResourcesForRemoval(const AtomicString& id)
     277SVGElement* SVGDocumentExtensions::removeElementFromPendingResourcesForRemoval(const AtomicString& id)
    285278{
    286279    if (id.isEmpty())
     
    292285
    293286    SVGPendingElements::iterator firstElement = resourceSet->begin();
    294     Element* element = *firstElement;
     287    SVGElement* element = *firstElement;
    295288
    296289    resourceSet->remove(firstElement);
  • trunk/Source/WebCore/svg/SVGDocumentExtensions.h

    r136975 r137463  
    4141class SVGSMILElement;
    4242class SVGSVGElement;
    43 class Element;
    4443
    4544class SVGDocumentExtensions {
    4645    WTF_MAKE_NONCOPYABLE(SVGDocumentExtensions); WTF_MAKE_FAST_ALLOCATED;
    4746public:
    48     typedef HashSet<Element*> SVGPendingElements;
     47    typedef HashSet<SVGElement*> SVGPendingElements;
    4948    SVGDocumentExtensions(Document*);
    5049    ~SVGDocumentExtensions();
     
    9392    // This HashMap contains a list of pending resources. Pending resources, are such
    9493    // which are referenced by any object in the SVG document, but do NOT exist yet.
    95     // For instance, dynamically build gradients / patterns / clippers...
    96     void addPendingResource(const AtomicString& id, Element*);
     94    // For instance, dynamically built gradients / patterns / clippers...
     95    void addPendingResource(const AtomicString& id, SVGElement*);
    9796    bool hasPendingResource(const AtomicString& id) const;
    98     bool isElementPendingResources(Element*) const;
    99     bool isElementPendingResource(Element*, const AtomicString& id) const;
    100     void clearHasPendingResourcesIfPossible(Element*);
    101     void removeElementFromPendingResources(Element*);
     97    bool isElementPendingResources(SVGElement*) const;
     98    bool isElementPendingResource(SVGElement*, const AtomicString& id) const;
     99    void removeElementFromPendingResources(SVGElement*);
    102100    PassOwnPtr<SVGPendingElements> removePendingResource(const AtomicString& id);
    103101
    104102    // The following two functions are used for scheduling a pending resource to be removed.
    105103    void markPendingResourcesForRemoval(const AtomicString&);
    106     Element* removeElementFromPendingResourcesForRemoval(const AtomicString&);
     104    SVGElement* removeElementFromPendingResourcesForRemoval(const AtomicString&);
    107105
    108106private:
  • trunk/Source/WebCore/svg/SVGElement.cpp

    r136975 r137463  
    543543    if (name != HTMLNames::styleAttr)
    544544        svgAttributeChanged(name);
     545}
     546
     547bool SVGElement::hasPendingResources() const
     548{
     549    return hasSVGRareData() && svgRareData()->hasPendingResources();
     550}
     551
     552void SVGElement::setHasPendingResources()
     553{
     554    ensureSVGRareData()->setHasPendingResources(true);
     555}
     556
     557void SVGElement::clearHasPendingResourcesIfPossible()
     558{
     559    if (!document()->accessSVGExtensions()->isElementPendingResources(this))
     560        ensureSVGRareData()->setHasPendingResources(false);
    545561}
    546562
  • trunk/Source/WebCore/svg/SVGElement.h

    r136975 r137463  
    7070
    7171    virtual void svgAttributeChanged(const QualifiedName&) { }
     72
     73    bool hasPendingResources() const;
     74    void setHasPendingResources();
     75    void clearHasPendingResourcesIfPossible();
     76    virtual void buildPendingResource() { }
    7277
    7378    virtual void animatedPropertyTypeForAttribute(const QualifiedName&, Vector<AnimatedPropertyType>&);
  • trunk/Source/WebCore/svg/SVGElementRareData.h

    r136975 r137463  
    4242        , m_correspondingElement(0)
    4343        , m_instancesUpdatesBlocked(false)
     44        , m_hasPendingResources(false)
    4445        , m_useOverrideComputedStyle(false)
    4546        , m_needsOverrideComputedStyleUpdate(false)
     
    6566    bool instanceUpdatesBlocked() const { return m_instancesUpdatesBlocked; }
    6667    void setInstanceUpdatesBlocked(bool value) { m_instancesUpdatesBlocked = value; }
     68
     69    bool hasPendingResources() const { return m_hasPendingResources; }
     70    void setHasPendingResources(bool value) { m_hasPendingResources = value; }
    6771
    6872    SVGCursorElement* cursorElement() const { return m_cursorElement; }
     
    112116    SVGElement* m_correspondingElement;
    113117    bool m_instancesUpdatesBlocked : 1;
     118    bool m_hasPendingResources : 1;
    114119    bool m_useOverrideComputedStyle : 1;
    115120    bool m_needsOverrideComputedStyleUpdate : 1;
  • trunk/Source/WebCore/svg/SVGStyledElement.cpp

    r137406 r137463  
    369369
    370370    // Rebuild pending resources for each client of a pending resource that is being removed.
    371     while (Element* clientElement = extensions->removeElementFromPendingResourcesForRemoval(resourceId)) {
     371    while (SVGElement* clientElement = extensions->removeElementFromPendingResourcesForRemoval(resourceId)) {
    372372        ASSERT(clientElement->hasPendingResources());
    373373        if (clientElement->hasPendingResources()) {
    374374            clientElement->buildPendingResource();
    375             extensions->clearHasPendingResourcesIfPossible(clientElement);
     375            clientElement->clearHasPendingResourcesIfPossible();
    376376        }
    377377    }
Note: See TracChangeset for help on using the changeset viewer.