diff options
Diffstat (limited to 'WebCore/platform/image-decoders')
-rw-r--r-- | WebCore/platform/image-decoders/ImageDecoder.cpp | 21 | ||||
-rw-r--r-- | WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp | 3 |
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; |