aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkPictureImageGenerator.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-04-13 15:13:36 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-04-13 19:53:12 +0000
commitc756c7acfeddb65f8eaa3f59714d5de93368ec30 (patch)
tree8a5cd5fa65cb3fa65c61aa15ac429a129fa05614 /src/core/SkPictureImageGenerator.cpp
parentd2ca59a1cd39f81d4fb05be253bc3803daa23210 (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.cpp16
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;
}