// TODO: Do not increment the m_frameBufferCache.size() by one but more than one void ImageDecoderQt::forceLoadEverything() { int imageCount = 0; do { m_frameBufferCache.resize(++imageCount); internalHandleCurrentImage(imageCount - 1); } while(!m_failed); // If we failed decoding the first image we actually // have no images and need to keep m_failed set to // true otherwise we want to reset it and forget about // the last attempt to decode a image. m_frameBufferCache.resize(imageCount - 1); m_failed = imageCount == 1; }
// TODO: Do not increment the m_frameBufferCache.size() by one but more than one void ImageDecoderQt::forceLoadEverything() { int imageCount = 0; do { m_frameBufferCache.resize(++imageCount); } while (internalHandleCurrentImage(imageCount - 1)); // If we failed decoding the first image we actually // have no images and need to set the failed bit. // Otherwise, we want to forget about // the last attempt to decode a image. m_frameBufferCache.resize(imageCount - 1); if (imageCount == 1) setFailed(); }
void ImageDecoderQt::internalReadImage(size_t frameIndex) { ASSERT(m_reader); if (m_reader->supportsAnimation()) m_reader->jumpToImage(frameIndex); else if (frameIndex != 0) return failRead(); internalHandleCurrentImage(frameIndex); // Attempt to return some memory for (int i = 0; i < m_frameBufferCache.size(); ++i) if (m_frameBufferCache[i].status() != RGBA32Buffer::FrameComplete) return; delete m_reader; delete m_buffer; m_buffer = 0; m_reader = 0; }
void ImageDecoderQt::internalReadImage(size_t frameIndex) { ASSERT(m_reader); if (m_reader->supportsAnimation()) m_reader->jumpToImage(frameIndex); else if (frameIndex) { setFailed(); return clearPointers(); } if (!internalHandleCurrentImage(frameIndex)) setFailed(); // Attempt to return some memory for (int i = 0; i < m_frameBufferCache.size(); ++i) { if (m_frameBufferCache[i].status() != ImageFrame::FrameComplete) return; } clearPointers(); }