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)) { |