| Index: src/codec/SkWebpCodec.cpp
|
| diff --git a/src/codec/SkWebpCodec.cpp b/src/codec/SkWebpCodec.cpp
|
| index ccf49649edb30e669c1b497f94b0e3cb69eeec0d..d53828dca45335e1fcac1e8ac2dd31bdc4ad74be 100644
|
| --- a/src/codec/SkWebpCodec.cpp
|
| +++ b/src/codec/SkWebpCodec.cpp
|
| @@ -151,7 +151,8 @@ bool SkWebpCodec::onGetValidSubset(SkIRect* desiredSubset) const {
|
| }
|
|
|
| SkCodec::Result SkWebpCodec::onGetPixels(const SkImageInfo& dstInfo, void* dst, size_t rowBytes,
|
| - const Options& options, SkPMColor*, int*) {
|
| + const Options& options, SkPMColor*, int*,
|
| + int* incompleteScanlines) {
|
| if (!this->rewindIfNeeded()) {
|
| return kCouldNotRewind;
|
| }
|
| @@ -231,10 +232,10 @@ SkCodec::Result SkWebpCodec::onGetPixels(const SkImageInfo& dstInfo, void* dst,
|
| while (true) {
|
| const size_t bytesRead = stream()->read(buffer, BUFFER_SIZE);
|
| if (0 == bytesRead) {
|
| - // FIXME: Maybe this is an incomplete image? How to decide? Based
|
| - // on the number of rows decoded? We can know the number of rows
|
| - // decoded using WebPIDecGetRGB.
|
| - return kInvalidInput;
|
| + int rowsDecoded;
|
| + WebPIDecGetRGB(idec, &rowsDecoded, NULL, NULL, NULL);
|
| + *incompleteScanlines = dstDimensions.height() - rowsDecoded;
|
| + return kIncompleteInput;
|
| }
|
|
|
| switch (WebPIAppend(idec, buffer, bytesRead)) {
|
|
|