diff options
author | Florin Malita <fmalita@chromium.org> | 2016-11-23 10:49:20 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-11-25 00:12:32 +0000 |
commit | 58cda8fa495225bbcb3d93bdd7f81ec515402475 (patch) | |
tree | 6c6dd374be3a738c93259653ac50652dacb0b5ce /gm/imagegeneratorexternal.cpp | |
parent | db0199b31752d42031b930504b134d6efd82be5d (diff) |
External image generator API: return an SkPixmap instead of SkImage
R=reed@google.com
BUG=skia:5806
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5134
Change-Id: Ib0215f63b67f4d5b619ebe1f1b70c7d95e604871
Reviewed-on: https://skia-review.googlesource.com/5134
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'gm/imagegeneratorexternal.cpp')
-rw-r--r-- | gm/imagegeneratorexternal.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/gm/imagegeneratorexternal.cpp b/gm/imagegeneratorexternal.cpp index 7427dd424e..b6e86c4126 100644 --- a/gm/imagegeneratorexternal.cpp +++ b/gm/imagegeneratorexternal.cpp @@ -14,6 +14,10 @@ namespace { +void release_proc(void*, void* releaseCtx) { + reinterpret_cast<SkImage*>(releaseCtx)->unref(); +} + class ExternalGenerator : public SkImageGenerator { public: ExternalGenerator(const SkISize size) @@ -53,10 +57,11 @@ protected: const SkScalar scale = SkTMin(scaleSize.width(), scaleSize.height()); const int lvl = SkScalarFloorToInt(-SkScalarLog2(scale)); - rec->fImage = fMips[SkTPin(lvl, 0, fMips.count())]; + const sk_sp<SkImage>& img = fMips[SkTPin(lvl, 0, fMips.count())]; + SkAssertResult(img->peekPixels(&rec->fPixmap)); const SkRect origBounds = SkRect::Make(this->getInfo().bounds()); - const SkRect newBounds = SkRect::Make(rec->fImage->bounds()); + const SkRect newBounds = SkRect::Make(img->bounds()); SkMatrix srcMap = SkMatrix::MakeScale(newBounds.width() / origBounds.width(), newBounds.height() / origBounds.height()); @@ -65,6 +70,9 @@ protected: rec->fQuality = kLow_SkFilterQuality; + rec->fReleaseProc = release_proc; + rec->fReleaseCtx = SkRef(img.get()); + return true; } |