Title: [152352] trunk
- Revision
- 152352
- Author
- [email protected]
- Date
- 2013-07-03 06:54:45 -0700 (Wed, 03 Jul 2013)
Log Message
Gif: zero filling should use memset instead of setRGBA for every pixel
https://bugs.webkit.org/show_bug.cgi?id=118350
Patch by Balazs Kelemen <[email protected]> on 2013-07-03
Reviewed by Allan Sandfeld Jensen.
No new tests. Actually it is not covered by existing tests. Surprisingly we haven't got pixel
tests for animated images. Given that this patch is pretty trivial I don't think it's worth the
cost to start introducing such tests.
I added a manual test: animated-gif-dispose-background.html.
GIFImageDecoder::initializeFrameBuffer use a loop to fill a subrect with tranparent pixels.
This is extremely ineffecient. The use case for this code path is not frequent on the web
but it's still better to fix it.
* platform/image-decoders/ImageDecoder.cpp:
(WebCore::ImageFrame::zeroFillFrameRect):
* platform/image-decoders/ImageDecoder.h:
* platform/image-decoders/gif/GIFImageDecoder.cpp:
(WebCore::GIFImageDecoder::initFrameBuffer):
Fixed indentation in addition.
Modified Paths
Added Paths
Diff
Added: trunk/ManualTests/animated-gif-dispose-background.html (0 => 152352)
--- trunk/ManualTests/animated-gif-dispose-background.html (rev 0)
+++ trunk/ManualTests/animated-gif-dispose-background.html 2013-07-03 13:54:45 UTC (rev 152352)
@@ -0,0 +1,6 @@
+<html>
+<body>
+ <p>Animated gif with background dispose method. Animation frames live behind their rects filled with transparent pixels.</p>
+ <img src="" />
+</body>
+</html>
Added: trunk/ManualTests/resources/dispose-background.gif (0 => 152352)
--- trunk/ManualTests/resources/dispose-background.gif (rev 0)
+++ trunk/ManualTests/resources/dispose-background.gif 2013-07-03 13:54:45 UTC (rev 152352)
@@ -0,0 +1,9 @@
+GIF89ad d \xF0 \x90\xFF\x87\xCE\xEB!\xF9d !\xFFNETSCAPE2.0 , d d \xFE\x8C\x8F\xA9\xCB\xED\xA3\x9C\xB4ڋ\xB3\xFB\x86\xE2H\x96扦\xEA\xB4\xEE\xEB\xAE2\xD7\xF6;\x97\xF7η\xB9\xD7\xA1qH\x94\x97\xC8d\x83 \xE59Ѫtj\xB0joӭ\x97\xFB\xFB\x8Ak\xB9\xB1\xB7:\xAB}\xA9\xB5厛\xE2t\xFD>\xBA\xD7Cz\xFC\xA7\xAF\xF7\xB8\xC71\xB8a؇\x98\xE8W\xC4xx\xF1Y!\xA9hQ99\x81٨\xB9\xC9\xE1\xF9 JJZ\xFAp\x8A\xEA\xA0*\xA7Ժ\xD6 {\xF6:\xABfjK;\x9A\xAB\x9B\xCAk\x86\xFB\xFB,\xBCE\lu\x8C\xA5\xBC\xCC\xD4\xEC|-4M\xDDc}\xBDS\xABm$\xDB]\xCD
+\x8E->\xBE]nnC\x91~\xF5\xCDC\xF9\xAE/sYoO\x8F\xEFX\x9F\x81\xA0\xA1_@y\x85\xD81'h\x85|\xB4\xE5q\xF80\xDAgp\x90\xA9(&\xE3W.[Dfu!\x85%\x8B\xA7\x90*\x91T\xF0\xE8$\x83A*}\xB9j\x99\xED\xCCHZf&lg3\xA7Ν<{\xFA\xFC 4\xE8\x89 !\xF9d ,
+ \x83 \xFF\xFF \x80 \xB2""\xA0R-\xFF \xFF\xFF .\x8BW\xFF\xFF\xFF\xFF\xFF \xFF \xEEP\xC9I\xAB\xBD8\x83\xCDA\xFE\xD3v # \x90h\x91\xA5p\x8C\x82{\x96\xAA\x84\x921\x9A\xFB \x96\xA3\x83a \xDC\xC9\xE4\xC1\x88FGc\xF2\x98,"q\xCD
+\x8Ah%^\xA9ӫ5;\x81J\x87\x80\xEB! F\x86\xC9\xA34\xB0 \xD0\xD7v:\xFBm\x91\x93\xECwyz\x80Gp
+FA\x80x#\x83 y\x87O,# \x97 \x81\x9D\x93\x97\x99\x97\x9A\x9C\xA5\x9Ck\x876A\x99\xA4\xAF\x9C\xAE\xB1\xA6\xAD\xADD \xBA\x9B\xAE \x99F\xB8\xB9\xB8\xBC\xA5\xAA+~\xBAȻ\xBA56F\x9B\xA4\xD2\xD36\xC2\xDF؛\xCB\xC1\xDF\xE5\xE1\xE3*\xDE\xE6\xA4\xE8\xE9\xE5\xB2\xC0\xDCN\xEB\xED\xD3)\xF2N\xF7\xF5\xF6!\xF9Y\xF8\xD5\xD8'017\xAC\xF2O\xBE !\xF9d ,# \x82 \xB2""\xBE\xBE\xBE\xFF \xFF\xFF\xFFp\x80\x90 \xDB8\xBA\xDC\xFE0\x8E @\x90"DYp\xE1]\xA1P
+e)\x80je9\xEBV\xEC\xF7\x9B\xB4\xCA\xEEs\xABm~\xB3 \xC9\xF4l`\xB1υR(}\xA2\x97\xA74\xFA\xAC\xA1B\xB8\x8E\xB3\xB6\xC9w\\x83Y\xC7I\xEA\xE4\xAEK\xE4q1g\xEB\xFB\xF5p~(T<Ncu<\x83T16zmeEGnz\x90\x96Mwxg\x95x!wt_Aw4\x94mE\xA5jPIP~6Pt"b?\x92}\x8B\xB0\xA0\xB9\xB6)
+\xB3\x95\x9A\xC1NP\x92\x98\xC6\xC1\x8DVDU\xCC\xCDO^\x8A\xC7|K\xC0\xD7\xC2U0\xD2ܥD\xA1\xDCBx\xE5\xE6ݺ\xEA\xEB_Wk\xA8\xEBW\xE4\xBC\xE6f\xC3 !\xF9d ,>