From 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Tue, 27 Jun 2017 06:07:23 +0000 Subject: webkitgtk-2.16.5 --- Source/WebCore/rendering/RenderImageResource.cpp | 27 ++++++++++++++++++------ 1 file changed, 20 insertions(+), 7 deletions(-) (limited to 'Source/WebCore/rendering/RenderImageResource.cpp') diff --git a/Source/WebCore/rendering/RenderImageResource.cpp b/Source/WebCore/rendering/RenderImageResource.cpp index e6a1dc459..bd1e55e40 100644 --- a/Source/WebCore/rendering/RenderImageResource.cpp +++ b/Source/WebCore/rendering/RenderImageResource.cpp @@ -31,6 +31,7 @@ #include "CachedImage.h" #include "Image.h" #include "RenderElement.h" +#include "RenderImage.h" #include "RenderImageResourceStyleImage.h" namespace WebCore { @@ -55,8 +56,10 @@ void RenderImageResource::shutdown() { ASSERT(m_renderer); - if (m_cachedImage) - m_cachedImage->removeClient(m_renderer); + if (m_cachedImage) { + image()->stopAnimation(); + m_cachedImage->removeClient(*m_renderer); + } } void RenderImageResource::setCachedImage(CachedImage* newImage) @@ -67,10 +70,10 @@ void RenderImageResource::setCachedImage(CachedImage* newImage) return; if (m_cachedImage) - m_cachedImage->removeClient(m_renderer); + m_cachedImage->removeClient(*m_renderer); m_cachedImage = newImage; if (m_cachedImage) { - m_cachedImage->addClient(m_renderer); + m_cachedImage->addClient(*m_renderer); if (m_cachedImage->errorOccurred()) m_renderer->imageChanged(m_cachedImage.get()); } @@ -89,7 +92,7 @@ void RenderImageResource::resetAnimation() m_renderer->repaint(); } -PassRefPtr RenderImageResource::image(int, int) const +RefPtr RenderImageResource::image(const IntSize&) const { return m_cachedImage ? m_cachedImage->imageForRenderer(m_renderer) : Image::nullImage(); } @@ -118,12 +121,22 @@ bool RenderImageResource::imageHasRelativeHeight() const LayoutSize RenderImageResource::imageSize(float multiplier) const { - return m_cachedImage ? m_cachedImage->imageSizeForRenderer(m_renderer, multiplier) : LayoutSize(); + return getImageSize(multiplier, CachedImage::UsedSize); } LayoutSize RenderImageResource::intrinsicSize(float multiplier) const { - return m_cachedImage ? m_cachedImage->imageSizeForRenderer(m_renderer, multiplier, CachedImage::IntrinsicSize) : LayoutSize(); + return getImageSize(multiplier, CachedImage::IntrinsicSize); +} + +LayoutSize RenderImageResource::getImageSize(float multiplier, CachedImage::SizeType type) const +{ + if (!m_cachedImage) + return LayoutSize(); + LayoutSize size = m_cachedImage->imageSizeForRenderer(m_renderer, multiplier, type); + if (is(m_renderer)) + size.scale(downcast(*m_renderer).imageDevicePixelRatio()); + return size; } } // namespace WebCore -- cgit v1.2.1