summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/image-decoders
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/platform/image-decoders')
-rw-r--r--WebCore/platform/image-decoders/ImageDecoder.cpp21
-rw-r--r--WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp3
2 files changed, 14 insertions, 10 deletions
diff --git a/WebCore/platform/image-decoders/ImageDecoder.cpp b/WebCore/platform/image-decoders/ImageDecoder.cpp
index 86bcb45..1946596 100644
--- a/WebCore/platform/image-decoders/ImageDecoder.cpp
+++ b/WebCore/platform/image-decoders/ImageDecoder.cpp
@@ -224,19 +224,20 @@ template <MatchType type> int getScaledValue(const Vector<int>& scaledValues, in
void ImageDecoder::prepareScaleDataIfNecessary()
{
+ m_scaled = false;
+ m_scaledColumns.clear();
+ m_scaledRows.clear();
+
int width = size().width();
int height = size().height();
int numPixels = height * width;
- if (m_maxNumPixels > 0 && numPixels > m_maxNumPixels) {
- m_scaled = true;
- double scale = sqrt(m_maxNumPixels / (double)numPixels);
- fillScaledValues(m_scaledColumns, scale, width);
- fillScaledValues(m_scaledRows, scale, height);
- } else if (m_scaled) {
- m_scaled = false;
- m_scaledColumns.clear();
- m_scaledRows.clear();
- }
+ if (m_maxNumPixels <= 0 || numPixels <= m_maxNumPixels)
+ return;
+
+ m_scaled = true;
+ double scale = sqrt(m_maxNumPixels / (double)numPixels);
+ fillScaledValues(m_scaledColumns, scale, width);
+ fillScaledValues(m_scaledRows, scale, height);
}
int ImageDecoder::upperBoundScaledX(int origX, int searchStart)
diff --git a/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp b/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp
index a590a6c..ec16da7 100644
--- a/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp
+++ b/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp
@@ -61,6 +61,9 @@ bool GIFImageDecoder::isSizeAvailable()
bool GIFImageDecoder::setSize(unsigned width, unsigned height)
{
+ if (ImageDecoder::isSizeAvailable() && size().width() == width && size().height() == height)
+ return true;
+
if (!ImageDecoder::setSize(width, height))
return false;