[CSS Filters] Move m_filter and related fields from RenderLayer to a different struct...
authorachicu@adobe.com <achicu@adobe.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 24 Apr 2012 17:17:45 +0000 (17:17 +0000)
committerachicu@adobe.com <achicu@adobe.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 24 Apr 2012 17:17:45 +0000 (17:17 +0000)
commit975b98fdfce588970c950e52b27c2d8c1e7cced3
tree1ea4b09725a61ec3ca7cf869b2de5fce20214680
parente113b9686db222c7b5a8ee990d3143f7e56c3ea8
[CSS Filters] Move m_filter and related fields from RenderLayer to a different structure and only allocate it when needed
https://bugs.webkit.org/show_bug.cgi?id=84460

Reviewed by Dean Jackson.

The new RenderLayerFilterInfo is meant to be allocated only when needed by filters. The link to the RenderLayerFilterInfo
is maintained using a HashMap and a single boolean in the RenderLayer class.

No new tests, just extracted a couple of fields inside the RenderLayer to a separate class.

* GNUmakefile.list.am:
* Target.pri:
* WebCore.gypi:
* WebCore.vcproj/WebCore.vcproj:
* WebCore.xcodeproj/project.pbxproj:
* rendering/FilterEffectRenderer.cpp:
(WebCore::FilterEffectRendererHelper::prepareFilterEffect):
(WebCore::FilterEffectRendererHelper::beginFilterEffect):
(WebCore::FilterEffectRendererHelper::applyFilterEffect):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::~RenderLayer):
(WebCore::RenderLayer::paintsWithFilters):
(WebCore::RenderLayer::requiresFullLayerImageForFilters):
(WebCore::RenderLayer::setFilterBackendNeedsRepaintingInRect):
(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::updateOrRemoveFilterEffect):
* rendering/RenderLayer.h:
(WebCore::RenderLayer::filterRenderer):
(RenderLayer):
(WebCore::RenderLayer::filterInfo):
(WebCore::RenderLayer::ensureFilterInfo):
(WebCore::RenderLayer::removeFilterInfoIfNeeded):
(WebCore::RenderLayer::hasFilterInfo):
(WebCore::RenderLayer::setHasFilterInfo):
* rendering/RenderLayerFilterInfo.cpp: Added.
(WebCore):
(WebCore::RenderLayerFilterInfo::filterInfoForRenderLayer):
(WebCore::RenderLayerFilterInfo::createFilterInfoForRenderLayerIfNeeded):
(WebCore::RenderLayerFilterInfo::removeFilterInfoForRenderLayer):
(WebCore::RenderLayerFilterInfo::RenderLayerFilterInfo):
(WebCore::RenderLayerFilterInfo::~RenderLayerFilterInfo):
(WebCore::RenderLayerFilterInfo::setRenderer):
* rendering/RenderLayerFilterInfo.h: Added.
(WebCore):
(RenderLayerFilterInfo):
(WebCore::RenderLayerFilterInfo::dirtySourceRect):
(WebCore::RenderLayerFilterInfo::addDirtySourceRect):
(WebCore::RenderLayerFilterInfo::resetDirtySourceRect):
(WebCore::RenderLayerFilterInfo::renderer):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@115079 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore/ChangeLog
Source/WebCore/GNUmakefile.list.am
Source/WebCore/Target.pri
Source/WebCore/WebCore.gypi
Source/WebCore/WebCore.vcproj/WebCore.vcproj
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebCore/rendering/FilterEffectRenderer.cpp
Source/WebCore/rendering/RenderLayer.cpp
Source/WebCore/rendering/RenderLayer.h
Source/WebCore/rendering/RenderLayerFilterInfo.cpp [new file with mode: 0644]
Source/WebCore/rendering/RenderLayerFilterInfo.h [new file with mode: 0644]