Skip to content
  • fmalita@chromium.org's avatar
    [SVG] Cached filter results are not invalidated on repaint rect change · 2c5fc8df
    fmalita@chromium.org authored
    https://bugs.webkit.org/show_bug.cgi?id=106221
    
    Reviewed by Dean Jackson.
    
    Source/WebCore:
    
    Since the cached filter results are not invalidated for different repaint rects, we need
    to render the content of the whole filter region upfront (otherwise elements not visible
    during the initial paint due to scrolling/window size/etc. are never redrawn).
    
    Tests: svg/filters/filter-hidden-content-expected.svg
           svg/filters/filter-hidden-content.svg
    
    * rendering/svg/RenderSVGResourceFilter.cpp:
    (WebCore::RenderSVGResourceFilter::applyResource):
    (WebCore::RenderSVGResourceFilter::drawingRegion):
    (WebCore):
    * rendering/svg/RenderSVGResourceFilter.h:
    (FilterData):
    (RenderSVGResourceFilter):
    Track the filter drawing region in FilterData.
    
    * rendering/svg/SVGRenderingContext.cpp:
    (WebCore::SVGRenderingContext::~SVGRenderingContext):
    (WebCore::SVGRenderingContext::prepareToRenderSVGContent):
    * rendering/svg/SVGRenderingContext.h:
    Update paintInfo.rect to cover the whole drawing region while rendering filter content, and
    restore it when done.
    
    LayoutTests:
    
    * svg/filters/filter-hidden-content-expected.svg: Added.
    * svg/filters/filter-hidden-content.svg: Added.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@142955 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    2c5fc8df