diff options
Diffstat (limited to 'lazy/SkDiscardablePixelRef.cpp')
-rw-r--r-- | lazy/SkDiscardablePixelRef.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/lazy/SkDiscardablePixelRef.cpp b/lazy/SkDiscardablePixelRef.cpp index 160ca5b4..28861561 100644 --- a/lazy/SkDiscardablePixelRef.cpp +++ b/lazy/SkDiscardablePixelRef.cpp @@ -72,20 +72,19 @@ bool SkInstallDiscardablePixelRef(SkImageGenerator* generator, SkBitmap* dst, SkDiscardableMemory::Factory* factory) { SkImageInfo info; - SkASSERT(generator != NULL); - if ((NULL == generator) - || (!generator->getInfo(&info)) + SkAutoTDelete<SkImageGenerator> autoGenerator(generator); + if ((NULL == autoGenerator.get()) + || (!autoGenerator->getInfo(&info)) || (!dst->setConfig(info, 0))) { - SkDELETE(generator); return false; } SkASSERT(dst->config() != SkBitmap::kNo_Config); - if (dst->empty()) { // Use a normal pixelref. - SkDELETE(generator); // Do not need this anymore. + if (dst->empty()) { // Use a normal pixelref. return dst->allocPixels(NULL, NULL); } - SkAutoTUnref<SkDiscardablePixelRef> ref(SkNEW_ARGS(SkDiscardablePixelRef, - (info, generator, dst->rowBytes(), factory))); + SkAutoTUnref<SkDiscardablePixelRef> ref( + SkNEW_ARGS(SkDiscardablePixelRef, + (info, autoGenerator.detach(), dst->rowBytes(), factory))); dst->setPixelRef(ref); return true; } |