Index: src/codec/SkGifCodec.cpp |
diff --git a/src/codec/SkGifCodec.cpp b/src/codec/SkGifCodec.cpp |
index ec965cb3339e23d575c6b24a6c468c570e578557..3cad36c032b954246a26ce767903be9f77dc4809 100644 |
--- a/src/codec/SkGifCodec.cpp |
+++ b/src/codec/SkGifCodec.cpp |
@@ -127,16 +127,22 @@ SkGifCodec::SkGifCodec(const SkEncodedInfo& encodedInfo, const SkImageInfo& imag |
reader->setClient(this); |
} |
-std::vector<SkCodec::FrameInfo> SkGifCodec::onGetFrameInfo() { |
+bool SkGifCodec::onGetFrameInfo(std::vector<FrameInfo>* frameInfos, int* repetitionCount) { |
fReader->parse(SkGifImageReader::SkGIFFrameCountQuery); |
const size_t size = fReader->imagesCount(); |
- std::vector<FrameInfo> result(size); |
- for (size_t i = 0; i < size; i++) { |
- const SkGIFFrameContext* frameContext = fReader->frameContext(i); |
- result[i].fDuration = frameContext->delayTime(); |
- result[i].fRequiredFrame = frameContext->getRequiredFrame(); |
+ if (frameInfos) { |
+ frameInfos->resize(size); |
+ for (size_t i = 0; i < size; i++) { |
+ const SkGIFFrameContext* frameContext = fReader->frameContext(i); |
+ auto& info = frameInfos->operator[](i); |
+ info.fDuration = frameContext->delayTime(); |
+ info.fRequiredFrame = frameContext->getRequiredFrame(); |
+ } |
} |
- return result; |
+ if (repetitionCount) { |
+ *repetitionCount = fReader->loopCount(); |
+ } |
+ return true; |
} |
void SkGifCodec::initializeColorTable(const SkImageInfo& dstInfo, size_t frameIndex, |