| Index: src/lazy/SkDiscardablePixelRef.cpp
|
| diff --git a/src/lazy/SkDiscardablePixelRef.cpp b/src/lazy/SkDiscardablePixelRef.cpp
|
| index eb35d0fcc4d5cf4c3cc9eed26a0415183afea76b..50dabd8d06847b345c2bcb21486167dcf1b1b27b 100644
|
| --- a/src/lazy/SkDiscardablePixelRef.cpp
|
| +++ b/src/lazy/SkDiscardablePixelRef.cpp
|
| @@ -17,8 +17,7 @@ SkDiscardablePixelRef::SkDiscardablePixelRef(SkImageGenerator* generator,
|
| , fGenerator(generator)
|
| , fDMFactory(fact)
|
| , fRowBytes(rowBytes)
|
| - , fDiscardableMemory(NULL)
|
| -{
|
| + , fDiscardableMemory(NULL) {
|
| SkASSERT(fGenerator != NULL);
|
| SkASSERT(fRowBytes > 0);
|
| // The SkImageGenerator contract requires fGenerator to always
|
| @@ -44,7 +43,7 @@ bool SkDiscardablePixelRef::onNewLockPixels(LockRec* rec) {
|
| SkDELETE(fDiscardableMemory);
|
| fDiscardableMemory = NULL;
|
| }
|
| -
|
| +
|
| const size_t size = this->info().getSafeSize(fRowBytes);
|
| if (fDMFactory != NULL) {
|
| fDiscardableMemory = fDMFactory->create(size);
|
| @@ -76,22 +75,20 @@ 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,
|
| - (generator, info,
|
| - dst->rowBytes(),
|
| - factory)));
|
| + (autoGenerator.detach(),
|
| + info, dst->rowBytes(),
|
| + factory)));
|
| dst->setPixelRef(ref);
|
| return true;
|
| }
|
|
|