diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2013-09-13 12:51:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-19 20:50:05 +0200 |
commit | d441d6f39bb846989d95bcf5caf387b42414718d (patch) | |
tree | e367e64a75991c554930278175d403c072de6bb8 /Source/WebCore/css/CSSCrossfadeValue.cpp | |
parent | 0060b2994c07842f4c59de64b5e3e430525c4b90 (diff) | |
download | qtwebkit-d441d6f39bb846989d95bcf5caf387b42414718d.tar.gz |
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit.
Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/WebCore/css/CSSCrossfadeValue.cpp')
-rw-r--r-- | Source/WebCore/css/CSSCrossfadeValue.cpp | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/Source/WebCore/css/CSSCrossfadeValue.cpp b/Source/WebCore/css/CSSCrossfadeValue.cpp index 7375d08bb..736c0c4fd 100644 --- a/Source/WebCore/css/CSSCrossfadeValue.cpp +++ b/Source/WebCore/css/CSSCrossfadeValue.cpp @@ -34,7 +34,6 @@ #include "RenderObject.h" #include "StyleCachedImage.h" #include "StyleGeneratedImage.h" -#include "WebCoreMemoryInstrumentation.h" #include <wtf/text/StringBuilder.h> namespace WebCore { @@ -52,17 +51,17 @@ static bool subimageIsPending(CSSValue* value) return false; } -static bool subimageHasAlpha(CSSValue* value, const RenderObject* renderer) +static bool subimageKnownToBeOpaque(CSSValue* value, const RenderObject* renderer) { if (value->isImageValue()) - return static_cast<CSSImageValue*>(value)->hasAlpha(renderer); + return static_cast<CSSImageValue*>(value)->knownToBeOpaque(renderer); if (value->isImageGeneratorValue()) - return static_cast<CSSImageGeneratorValue*>(value)->hasAlpha(renderer); + return static_cast<CSSImageGeneratorValue*>(value)->knownToBeOpaque(renderer); ASSERT_NOT_REACHED(); - return true; + return false; } static CachedImage* cachedImageForCSSValue(CSSValue* value, CachedResourceLoader* cachedResourceLoader) @@ -139,35 +138,34 @@ bool CSSCrossfadeValue::isPending() const return subimageIsPending(m_fromValue.get()) || subimageIsPending(m_toValue.get()); } -bool CSSCrossfadeValue::hasAlpha(const RenderObject* renderer) const +bool CSSCrossfadeValue::knownToBeOpaque(const RenderObject* renderer) const { - return subimageHasAlpha(m_fromValue.get(), renderer) || subimageHasAlpha(m_toValue.get(), renderer); + return subimageKnownToBeOpaque(m_fromValue.get(), renderer) && subimageKnownToBeOpaque(m_toValue.get(), renderer); } void CSSCrossfadeValue::loadSubimages(CachedResourceLoader* cachedResourceLoader) { + CachedResourceHandle<CachedImage> oldCachedFromImage = m_cachedFromImage; + CachedResourceHandle<CachedImage> oldCachedToImage = m_cachedToImage; + m_cachedFromImage = cachedImageForCSSValue(m_fromValue.get(), cachedResourceLoader); m_cachedToImage = cachedImageForCSSValue(m_toValue.get(), cachedResourceLoader); - if (m_cachedFromImage) - m_cachedFromImage->addClient(&m_crossfadeSubimageObserver); - if (m_cachedToImage) - m_cachedToImage->addClient(&m_crossfadeSubimageObserver); + if (m_cachedFromImage != oldCachedFromImage) { + if (oldCachedFromImage) + oldCachedFromImage->removeClient(&m_crossfadeSubimageObserver); + if (m_cachedFromImage) + m_cachedFromImage->addClient(&m_crossfadeSubimageObserver); + } - m_crossfadeSubimageObserver.setReady(true); -} + if (m_cachedToImage != oldCachedToImage) { + if (oldCachedToImage) + oldCachedToImage->removeClient(&m_crossfadeSubimageObserver); + if (m_cachedToImage) + m_cachedToImage->addClient(&m_crossfadeSubimageObserver); + } -void CSSCrossfadeValue::reportDescendantMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const -{ - MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::CSS); - CSSImageGeneratorValue::reportBaseClassMemoryUsage(memoryObjectInfo); - info.addMember(m_fromValue); - info.addMember(m_toValue); - info.addMember(m_percentageValue); - // FIXME: add instrumentation for - // m_cachedFromImage - // m_cachedToImage - // m_generatedImage + m_crossfadeSubimageObserver.setReady(true); } PassRefPtr<Image> CSSCrossfadeValue::image(RenderObject* renderer, const IntSize& size) @@ -195,8 +193,8 @@ PassRefPtr<Image> CSSCrossfadeValue::image(RenderObject* renderer, const IntSize void CSSCrossfadeValue::crossfadeChanged(const IntRect&) { - RenderObjectSizeCountMap::const_iterator end = clients().end(); - for (RenderObjectSizeCountMap::const_iterator curr = clients().begin(); curr != end; ++curr) { + HashCountedSet<RenderObject*>::const_iterator end = clients().end(); + for (HashCountedSet<RenderObject*>::const_iterator curr = clients().begin(); curr != end; ++curr) { RenderObject* client = const_cast<RenderObject*>(curr->key); client->imageChanged(static_cast<WrappedImagePtr>(this)); } @@ -217,4 +215,11 @@ bool CSSCrossfadeValue::hasFailedOrCanceledSubresources() const return false; } +bool CSSCrossfadeValue::equals(const CSSCrossfadeValue& other) const +{ + return compareCSSValuePtr(m_fromValue, other.m_fromValue) + && compareCSSValuePtr(m_toValue, other.m_toValue) + && compareCSSValuePtr(m_percentageValue, other.m_percentageValue); +} + } // namespace WebCore |