[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
commit-queue at webkit.org
commit-queue at webkit.org
Wed Dec 22 11:45:11 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 21fb075dc9702997871780e04c3e6e8e3a198916
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Thu Aug 5 20:01:40 2010 +0000
2010-08-05 Yong Li <yoli at rim.com>
Reviewed by Adam Treat.
Fix the problem that down-sampling code doesn't work
for some GIF's. GIF reader can call setSize() multiple times.
We should clear the scaling maps before adding new entries.
Also add a fast path to check if the size has changed since last time.
https://bugs.webkit.org/show_bug.cgi?id=43501
* platform/image-decoders/ImageDecoder.cpp:
(WebCore::ImageDecoder::prepareScaleDataIfNecessary):
* platform/image-decoders/gif/GIFImageDecoder.cpp:
(WebCore::GIFImageDecoder::setSize):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64777 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 67635cd..9de13fb 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,19 @@
+2010-08-05 Yong Li <yoli at rim.com>
+
+ Reviewed by Adam Treat.
+
+ Fix the problem that down-sampling code doesn't work
+ for some GIF's. GIF reader can call setSize() multiple times.
+ We should clear the scaling maps before adding new entries.
+ Also add a fast path to check if the size has changed since last time.
+
+ https://bugs.webkit.org/show_bug.cgi?id=43501
+
+ * platform/image-decoders/ImageDecoder.cpp:
+ (WebCore::ImageDecoder::prepareScaleDataIfNecessary):
+ * platform/image-decoders/gif/GIFImageDecoder.cpp:
+ (WebCore::GIFImageDecoder::setSize):
+
2010-08-05 Ilya Tikhonovsky <loislo at chromium.org>
Reviewed by Yury Semikhatsky.
diff --git a/WebCore/platform/image-decoders/ImageDecoder.cpp b/WebCore/platform/image-decoders/ImageDecoder.cpp
index 172bccf..fadb9e3 100644
--- a/WebCore/platform/image-decoders/ImageDecoder.cpp
+++ b/WebCore/platform/image-decoders/ImageDecoder.cpp
@@ -219,19 +219,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;
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list