| 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,
|
|
|