| Index: src/codec/SkCodec_wbmp.cpp
|
| diff --git a/src/codec/SkCodec_wbmp.cpp b/src/codec/SkCodec_wbmp.cpp
|
| index 22f2bacce0d22f4fb4246a7f8c06338c1f09be17..727aeed2ec4ee99b77c72b852a329302095e00d1 100644
|
| --- a/src/codec/SkCodec_wbmp.cpp
|
| +++ b/src/codec/SkCodec_wbmp.cpp
|
| @@ -140,6 +140,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) {
|
| + this->setIncompleteScanlines(size.height() - y);
|
| return rowResult;
|
| }
|
| swizzler->swizzle(dstRow, src.get());
|
| @@ -169,24 +170,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 +233,7 @@ public:
|
| }
|
|
|
| private:
|
| - SkAutoTDelete<SkWbmpCodec> fCodec;
|
| + SkWbmpCodec* fCodec; // Owned by parent class
|
| SkAutoTUnref<SkColorTable> fColorTable;
|
| SkAutoTDelete<SkSwizzler> fSwizzler;
|
| SkAutoTMalloc<uint8_t> fSrcBuffer;
|
|
|