diff options
author | Mike Reed <reed@google.com> | 2017-04-13 15:13:36 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-04-13 19:53:12 +0000 |
commit | c756c7acfeddb65f8eaa3f59714d5de93368ec30 (patch) | |
tree | 8a5cd5fa65cb3fa65c61aa15ac429a129fa05614 /src/core/SkPictureImageGenerator.cpp | |
parent | d2ca59a1cd39f81d4fb05be253bc3803daa23210 (diff) |
make picture-imagegenerator more robust on requested infos
This new unittest would assert before this fix.
Bug: skia:6501
Change-Id: I351ad03f29bccc054f72bfcb838174830dbd008c
Reviewed-on: https://skia-review.googlesource.com/13413
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
Diffstat (limited to 'src/core/SkPictureImageGenerator.cpp')
-rw-r--r-- | src/core/SkPictureImageGenerator.cpp | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/src/core/SkPictureImageGenerator.cpp b/src/core/SkPictureImageGenerator.cpp index a1d919af34..a960001e13 100644 --- a/src/core/SkPictureImageGenerator.cpp +++ b/src/core/SkPictureImageGenerator.cpp @@ -59,19 +59,13 @@ SkPictureImageGenerator::SkPictureImageGenerator(const SkImageInfo& info, sk_sp< bool SkPictureImageGenerator::onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, SkPMColor ctable[], int* ctableCount) { - if (ctable || ctableCount) { + // Rely on SkCanvas factory to know what configs can and cannot be drawn into. + auto canvas = SkCanvas::MakeRasterDirect(info, pixels, rowBytes); + if (!canvas) { return false; } - - SkBitmap bitmap; - if (!bitmap.installPixels(info, pixels, rowBytes)) { - return false; - } - - bitmap.eraseColor(SK_ColorTRANSPARENT); - SkCanvas canvas(bitmap, SkSurfaceProps(0, kUnknown_SkPixelGeometry)); - canvas.drawPicture(fPicture.get(), &fMatrix, fPaint.getMaybeNull()); - + canvas->clear(0); + canvas->drawPicture(fPicture, &fMatrix, fPaint.getMaybeNull()); return true; } |