| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. | 2 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 298 if (failed()) | 298 if (failed()) |
| 299 return; | 299 return; |
| 300 | 300 |
| 301 Vector<size_t> framesToDecode; | 301 Vector<size_t> framesToDecode; |
| 302 size_t frameToDecode = frameIndex; | 302 size_t frameToDecode = frameIndex; |
| 303 do { | 303 do { |
| 304 framesToDecode.append(frameToDecode); | 304 framesToDecode.append(frameToDecode); |
| 305 frameToDecode = m_frameBufferCache[frameToDecode].requiredPreviousFrameI
ndex(); | 305 frameToDecode = m_frameBufferCache[frameToDecode].requiredPreviousFrameI
ndex(); |
| 306 } while (frameToDecode != notFound && m_frameBufferCache[frameToDecode].stat
us() != ImageFrame::FrameComplete); | 306 } while (frameToDecode != notFound && m_frameBufferCache[frameToDecode].stat
us() != ImageFrame::FrameComplete); |
| 307 | 307 |
| 308 // The |rend| variable is needed by some compilers that can't correctly | 308 for (size_t i = framesToDecode.size(); i > 0; --i) { |
| 309 // select from const and non-const versions of overloaded functions. | 309 size_t frameIndex = framesToDecode[i - 1]; |
| 310 // Can remove the variable if Android compiler can compile | |
| 311 // 'iter != framesToDecode.rend()'. | |
| 312 Vector<size_t>::const_reverse_iterator rend = framesToDecode.rend(); | |
| 313 for (Vector<size_t>::const_reverse_iterator iter = framesToDecode.rbegin();
iter != rend; ++iter) { | |
| 314 size_t frameIndex = *iter; | |
| 315 if (!m_reader->decode(frameIndex)) { | 310 if (!m_reader->decode(frameIndex)) { |
| 316 setFailed(); | 311 setFailed(); |
| 317 return; | 312 return; |
| 318 } | 313 } |
| 319 | 314 |
| 320 // We need more data to continue decoding. | 315 // We need more data to continue decoding. |
| 321 if (m_frameBufferCache[frameIndex].status() != ImageFrame::FrameComplete
) | 316 if (m_frameBufferCache[frameIndex].status() != ImageFrame::FrameComplete
) |
| 322 break; | 317 break; |
| 323 } | 318 } |
| 324 | 319 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 | 358 |
| 364 // Update our status to be partially complete. | 359 // Update our status to be partially complete. |
| 365 buffer->setStatus(ImageFrame::FramePartial); | 360 buffer->setStatus(ImageFrame::FramePartial); |
| 366 | 361 |
| 367 // Reset the alpha pixel tracker for this frame. | 362 // Reset the alpha pixel tracker for this frame. |
| 368 m_currentBufferSawAlpha = false; | 363 m_currentBufferSawAlpha = false; |
| 369 return true; | 364 return true; |
| 370 } | 365 } |
| 371 | 366 |
| 372 } // namespace WebCore | 367 } // namespace WebCore |
| OLD | NEW |