OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006 Apple Computer, Inc. | 2 * Copyright (C) 2006 Apple Computer, Inc. |
3 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. | 3 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. |
4 * | 4 * |
5 * Portions are Copyright (C) 2001 mozilla.org | 5 * Portions are Copyright (C) 2001 mozilla.org |
6 * | 6 * |
7 * Other contributors: | 7 * Other contributors: |
8 * Stuart Parmenter <stuart@mozilla.com> | 8 * Stuart Parmenter <stuart@mozilla.com> |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 // Initialize the framebuffer if needed. | 205 // Initialize the framebuffer if needed. |
206 ImageFrame& buffer = m_frameBufferCache[0]; | 206 ImageFrame& buffer = m_frameBufferCache[0]; |
207 if (buffer.getStatus() == ImageFrame::FrameEmpty) { | 207 if (buffer.getStatus() == ImageFrame::FrameEmpty) { |
208 png_structp png = m_reader->pngPtr(); | 208 png_structp png = m_reader->pngPtr(); |
209 if (!buffer.setSizeAndColorSpace(size().width(), size().height(), | 209 if (!buffer.setSizeAndColorSpace(size().width(), size().height(), |
210 colorSpaceForSkImages())) { | 210 colorSpaceForSkImages())) { |
211 longjmp(JMPBUF(png), 1); | 211 longjmp(JMPBUF(png), 1); |
212 return; | 212 return; |
213 } | 213 } |
214 | 214 |
| 215 buffer.zeroFillPixelData(); |
| 216 |
215 unsigned colorChannels = m_reader->hasAlpha() ? 4 : 3; | 217 unsigned colorChannels = m_reader->hasAlpha() ? 4 : 3; |
216 if (PNG_INTERLACE_ADAM7 == | 218 if (PNG_INTERLACE_ADAM7 == |
217 png_get_interlace_type(png, m_reader->infoPtr())) { | 219 png_get_interlace_type(png, m_reader->infoPtr())) { |
218 m_reader->createInterlaceBuffer(colorChannels * size().width() * | 220 m_reader->createInterlaceBuffer(colorChannels * size().width() * |
219 size().height()); | 221 size().height()); |
220 if (!m_reader->interlaceBuffer()) { | 222 if (!m_reader->interlaceBuffer()) { |
221 longjmp(JMPBUF(png), 1); | 223 longjmp(JMPBUF(png), 1); |
222 return; | 224 return; |
223 } | 225 } |
224 } | 226 } |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 // has failed. | 365 // has failed. |
364 if (!m_reader->decode(*m_data, onlySize) && isAllDataReceived()) | 366 if (!m_reader->decode(*m_data, onlySize) && isAllDataReceived()) |
365 setFailed(); | 367 setFailed(); |
366 | 368 |
367 // If decoding is done or failed, we don't need the PNGImageReader anymore. | 369 // If decoding is done or failed, we don't need the PNGImageReader anymore. |
368 if (isComplete(this) || failed()) | 370 if (isComplete(this) || failed()) |
369 m_reader.reset(); | 371 m_reader.reset(); |
370 } | 372 } |
371 | 373 |
372 } // namespace blink | 374 } // namespace blink |
OLD | NEW |