diff options
author | Matt Sarett <msarett@google.com> | 2017-06-05 10:45:30 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-06-05 15:13:40 +0000 |
commit | d3df9ec874b2668111b36ce0993d860b4f88c765 (patch) | |
tree | 693ad2138c2fe4facd362eee8289af1a811f60e3 /src/image/SkImage_Raster.cpp | |
parent | d81fed9ce2b9c8f2f227cf74c2578b90aafbe196 (diff) |
SkImage::makeColorSpace(): Fix nullptr->sRGB bug with picture images
Bug: 729352
Change-Id: I5ad5e2121ce87dc154528bfd9ec0f3e9253ed792
Reviewed-on: https://skia-review.googlesource.com/18590
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
Diffstat (limited to 'src/image/SkImage_Raster.cpp')
-rw-r--r-- | src/image/SkImage_Raster.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp index e0d418a129..f4f1211eb5 100644 --- a/src/image/SkImage_Raster.cpp +++ b/src/image/SkImage_Raster.cpp @@ -348,18 +348,22 @@ bool SkImage_Raster::onAsLegacyBitmap(SkBitmap* bitmap, LegacyBitmapMode mode) c sk_sp<SkImage> SkImage_Raster::onMakeColorSpace(sk_sp<SkColorSpace> target, SkColorType targetColorType, SkTransferFunctionBehavior premulBehavior) const { - SkImageInfo dstInfo = fBitmap.info().makeColorType(targetColorType).makeColorSpace(target); - SkBitmap dst; - dst.allocPixels(dstInfo); - SkPixmap src; SkAssertResult(fBitmap.peekPixels(&src)); // Treat nullptr srcs as sRGB. if (!src.colorSpace()) { + if (target->isSRGB()) { + return sk_ref_sp(const_cast<SkImage*>((SkImage*)this)); + } + src.setColorSpace(SkColorSpace::MakeSRGB()); } + SkImageInfo dstInfo = fBitmap.info().makeColorType(targetColorType).makeColorSpace(target); + SkBitmap dst; + dst.allocPixels(dstInfo); + SkAssertResult(dst.writePixels(src, 0, 0, premulBehavior)); dst.setImmutable(); return SkImage::MakeFromBitmap(dst); |