| Index: src/codec/SkCodec_wbmp.cpp
|
| diff --git a/src/codec/SkCodec_wbmp.cpp b/src/codec/SkCodec_wbmp.cpp
|
| index 22f2bacce0d22f4fb4246a7f8c06338c1f09be17..61f64219c1af8ed1d85fb34823934e0ea15389f5 100644
|
| --- a/src/codec/SkCodec_wbmp.cpp
|
| +++ b/src/codec/SkCodec_wbmp.cpp
|
| @@ -107,7 +107,8 @@ SkCodec::Result SkWbmpCodec::onGetPixels(const SkImageInfo& info,
|
| size_t rowBytes,
|
| const Options& options,
|
| SkPMColor ctable[],
|
| - int* ctableCount) {
|
| + int* ctableCount,
|
| + int* incompleteScanlines) {
|
| if (!this->rewindIfNeeded()) {
|
| return kCouldNotRewind;
|
| }
|
| @@ -140,6 +141,7 @@ SkCodec::Result SkWbmpCodec::onGetPixels(const SkImageInfo& info,
|
| for (int y = 0; y < size.height(); ++y) {
|
| Result rowResult = this->readRow(src.get());
|
| if (kSuccess != rowResult) {
|
| + *incompleteScanlines = size.height() - y;
|
| return rowResult;
|
| }
|
| swizzler->swizzle(dstRow, src.get());
|
| @@ -169,24 +171,24 @@ public:
|
| * Takes ownership of all pointer paramters.
|
| */
|
| SkWbmpScanlineDecoder(SkWbmpCodec* codec)
|
| - : INHERITED(codec->getInfo())
|
| + : INHERITED(codec, codec->getInfo())
|
| , fCodec(codec)
|
| , fColorTable(nullptr)
|
| , fSwizzler(nullptr)
|
| , fSrcBuffer(codec->fSrcRowBytes)
|
| {}
|
|
|
| - SkCodec::Result onGetScanlines(void* dst, int count, size_t dstRowBytes) override {
|
| + uint32_t onGetScanlines(void* dst, int count, size_t dstRowBytes) override {
|
| void* dstRow = dst;
|
| for (int y = 0; y < count; ++y) {
|
| SkCodec::Result rowResult = fCodec->readRow(fSrcBuffer.get());
|
| if (SkCodec::kSuccess != rowResult) {
|
| - return rowResult;
|
| + return y;
|
| }
|
| fSwizzler->swizzle(dstRow, fSrcBuffer.get());
|
| dstRow = SkTAddOffset<void>(dstRow, dstRowBytes);
|
| }
|
| - return SkCodec::kSuccess;
|
| + return count;
|
| }
|
|
|
| SkCodec::Result onStart(const SkImageInfo& dstInfo,
|
| @@ -232,7 +234,7 @@ public:
|
| }
|
|
|
| private:
|
| - SkAutoTDelete<SkWbmpCodec> fCodec;
|
| + SkWbmpCodec* fCodec; // Owned by parent class
|
| SkAutoTUnref<SkColorTable> fColorTable;
|
| SkAutoTDelete<SkSwizzler> fSwizzler;
|
| SkAutoTMalloc<uint8_t> fSrcBuffer;
|
|
|