Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(394)

Side by Side Diff: Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp

Issue 6526023: Merge 78548 - 2011-02-15 Gavin Peters <gavinp@chromium.org>... (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/648/
Patch Set: Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006 Apple Computer, Inc. 2 * Copyright (C) 2006 Apple Computer, Inc.
3 * 3 *
4 * Portions are Copyright (C) 2001-6 mozilla.org 4 * Portions are Copyright (C) 2001-6 mozilla.org
5 * 5 *
6 * Other contributors: 6 * Other contributors:
7 * Stuart Parmenter <stuart@mozilla.com> 7 * Stuart Parmenter <stuart@mozilla.com>
8 * 8 *
9 * Copyright (C) 2007-2009 Torch Mobile, Inc. 9 * Copyright (C) 2007-2009 Torch Mobile, Inc.
10 * 10 *
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 void skipBytes(long numBytes) 172 void skipBytes(long numBytes)
173 { 173 {
174 decoder_source_mgr* src = (decoder_source_mgr*)m_info.src; 174 decoder_source_mgr* src = (decoder_source_mgr*)m_info.src;
175 long bytesToSkip = std::min(numBytes, (long)src->pub.bytes_in_buffer); 175 long bytesToSkip = std::min(numBytes, (long)src->pub.bytes_in_buffer);
176 src->pub.bytes_in_buffer -= (size_t)bytesToSkip; 176 src->pub.bytes_in_buffer -= (size_t)bytesToSkip;
177 src->pub.next_input_byte += bytesToSkip; 177 src->pub.next_input_byte += bytesToSkip;
178 178
179 m_bytesToSkip = std::max(numBytes - bytesToSkip, static_cast<long>(0)); 179 m_bytesToSkip = std::max(numBytes - bytesToSkip, static_cast<long>(0));
180 } 180 }
181 181
182 bool decode(const Vector<char>& data, bool onlySize) 182 bool decode(const SharedBuffer& data, bool onlySize)
183 { 183 {
184 m_decodingSizeOnly = onlySize; 184 m_decodingSizeOnly = onlySize;
185 185
186 unsigned newByteCount = data.size() - m_bufferLength; 186 unsigned newByteCount = data.size() - m_bufferLength;
187 unsigned readOffset = m_bufferLength - m_info.src->bytes_in_buffer; 187 unsigned readOffset = m_bufferLength - m_info.src->bytes_in_buffer;
188 188
189 m_info.src->bytes_in_buffer += newByteCount; 189 m_info.src->bytes_in_buffer += newByteCount;
190 m_info.src->next_input_byte = (JOCTET*)(data.data()) + readOffset; 190 m_info.src->next_input_byte = (JOCTET*)(data.data()) + readOffset;
191 191
192 // If we still have bytes to skip, try to skip those now. 192 // If we still have bytes to skip, try to skip those now.
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 void JPEGImageDecoder::decode(bool onlySize) 519 void JPEGImageDecoder::decode(bool onlySize)
520 { 520 {
521 if (failed()) 521 if (failed())
522 return; 522 return;
523 523
524 if (!m_reader) 524 if (!m_reader)
525 m_reader.set(new JPEGImageReader(this)); 525 m_reader.set(new JPEGImageReader(this));
526 526
527 // If we couldn't decode the image but we've received all the data, decoding 527 // If we couldn't decode the image but we've received all the data, decoding
528 // has failed. 528 // has failed.
529 if (!m_reader->decode(m_data->buffer(), onlySize) && isAllDataReceived()) 529 if (!m_reader->decode(*m_data, onlySize) && isAllDataReceived())
530 setFailed(); 530 setFailed();
531 // If we're done decoding the image, we don't need the JPEGImageReader 531 // If we're done decoding the image, we don't need the JPEGImageReader
532 // anymore. (If we failed, |m_reader| has already been cleared.) 532 // anymore. (If we failed, |m_reader| has already been cleared.)
533 else if (!m_frameBufferCache.isEmpty() && (m_frameBufferCache[0].status() == ImageFrame::FrameComplete)) 533 else if (!m_frameBufferCache.isEmpty() && (m_frameBufferCache[0].status() == ImageFrame::FrameComplete))
534 m_reader.clear(); 534 m_reader.clear();
535 } 535 }
536 536
537 } 537 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698