| Index: src/codec/SkCodec_wbmp.cpp
|
| diff --git a/src/codec/SkCodec_wbmp.cpp b/src/codec/SkCodec_wbmp.cpp
|
| index d7f446bb5766558eb2f4e5f91f2f99071ec7f740..14b720988f8b554ed8b73382f66da53f83d32405 100644
|
| --- a/src/codec/SkCodec_wbmp.cpp
|
| +++ b/src/codec/SkCodec_wbmp.cpp
|
| @@ -86,11 +86,8 @@ SkSwizzler* SkWbmpCodec::initializeSwizzler(const SkImageInfo& info,
|
| opts.fZeroInitialized);
|
| }
|
|
|
| -SkCodec::Result SkWbmpCodec::readRow(uint8_t* row) {
|
| - if (this->stream()->read(row, fSrcRowBytes) != fSrcRowBytes) {
|
| - return kIncompleteInput;
|
| - }
|
| - return kSuccess;
|
| +bool SkWbmpCodec::readRow(uint8_t* row) {
|
| + return this->stream()->read(row, fSrcRowBytes) == fSrcRowBytes;
|
| }
|
|
|
| SkWbmpCodec::SkWbmpCodec(const SkImageInfo& info, SkStream* stream)
|
| @@ -109,7 +106,8 @@ SkCodec::Result SkWbmpCodec::onGetPixels(const SkImageInfo& info,
|
| size_t rowBytes,
|
| const Options& options,
|
| SkPMColor ctable[],
|
| - int* ctableCount) {
|
| + int* ctableCount,
|
| + int* rowsDecoded) {
|
| if (options.fSubset) {
|
| // Subsets are not supported.
|
| return kUnimplemented;
|
| @@ -133,9 +131,9 @@ SkCodec::Result SkWbmpCodec::onGetPixels(const SkImageInfo& info,
|
| SkAutoTMalloc<uint8_t> src(fSrcRowBytes);
|
| void* dstRow = dst;
|
| for (int y = 0; y < size.height(); ++y) {
|
| - Result rowResult = this->readRow(src.get());
|
| - if (kSuccess != rowResult) {
|
| - return rowResult;
|
| + if (!this->readRow(src.get())) {
|
| + *rowsDecoded = y;
|
| + return kIncompleteInput;
|
| }
|
| swizzler->swizzle(dstRow, src.get());
|
| dstRow = SkTAddOffset<void>(dstRow, rowBytes);
|
| @@ -158,17 +156,16 @@ SkCodec* SkWbmpCodec::NewFromStream(SkStream* stream) {
|
| return new SkWbmpCodec(info, streamDeleter.detach());
|
| }
|
|
|
| -SkCodec::Result SkWbmpCodec::onGetScanlines(void* dst, int count, size_t dstRowBytes) {
|
| +int SkWbmpCodec::onGetScanlines(void* dst, int count, size_t dstRowBytes) {
|
| void* dstRow = dst;
|
| for (int y = 0; y < count; ++y) {
|
| - Result rowResult = this->readRow(fSrcBuffer.get());
|
| - if (kSuccess != rowResult) {
|
| - return rowResult;
|
| + if (!this->readRow(fSrcBuffer.get())) {
|
| + return y;
|
| }
|
| fSwizzler->swizzle(dstRow, fSrcBuffer.get());
|
| dstRow = SkTAddOffset<void>(dstRow, dstRowBytes);
|
| }
|
| - return kSuccess;
|
| + return count;
|
| }
|
|
|
| SkCodec::Result SkWbmpCodec::onStartScanlineDecode(const SkImageInfo& dstInfo,
|
| @@ -201,4 +198,3 @@ SkCodec::Result SkWbmpCodec::onStartScanlineDecode(const SkImageInfo& dstInfo,
|
|
|
| return kSuccess;
|
| }
|
| -
|
|
|