| Index: src/core/SkScaledImageCache.cpp
|
| diff --git a/src/core/SkScaledImageCache.cpp b/src/core/SkScaledImageCache.cpp
|
| index 45a568463853e050030a47a48da04b2990544013..5a772a7cd502681ea558acfd1dba98b4b86a289b 100644
|
| --- a/src/core/SkScaledImageCache.cpp
|
| +++ b/src/core/SkScaledImageCache.cpp
|
| @@ -199,13 +199,11 @@ public:
|
| SK_DECLARE_UNFLATTENABLE_OBJECT()
|
|
|
| protected:
|
| - virtual void* onLockPixels(SkColorTable**) SK_OVERRIDE;
|
| + virtual bool onNewLockPixels(LockRec*) SK_OVERRIDE;
|
| virtual void onUnlockPixels() SK_OVERRIDE;
|
| virtual size_t getAllocatedSizeInBytes() const SK_OVERRIDE;
|
|
|
| private:
|
| - SkImageInfo fInfo; // remove when SkPixelRef gets this in baseclass
|
| -
|
| SkDiscardableMemory* fDM;
|
| size_t fRB;
|
| bool fFirstTime;
|
| @@ -220,8 +218,6 @@ SkOneShotDiscardablePixelRef::SkOneShotDiscardablePixelRef(const SkImageInfo& in
|
| , fDM(dm)
|
| , fRB(rowBytes)
|
| {
|
| - fInfo = info; // remove this redundant field when SkPixelRef has info
|
| -
|
| SkASSERT(dm->data());
|
| fFirstTime = true;
|
| }
|
| @@ -230,26 +226,31 @@ SkOneShotDiscardablePixelRef::~SkOneShotDiscardablePixelRef() {
|
| SkDELETE(fDM);
|
| }
|
|
|
| -void* SkOneShotDiscardablePixelRef::onLockPixels(SkColorTable** ctable) {
|
| +bool SkOneShotDiscardablePixelRef::onNewLockPixels(LockRec* rec) {
|
| if (fFirstTime) {
|
| // we're already locked
|
| SkASSERT(fDM->data());
|
| fFirstTime = false;
|
| - return fDM->data();
|
| + goto SUCCESS;
|
| }
|
|
|
| // A previous call to onUnlock may have deleted our DM, so check for that
|
| if (NULL == fDM) {
|
| - return NULL;
|
| + return false;
|
| }
|
|
|
| if (!fDM->lock()) {
|
| // since it failed, we delete it now, to free-up the resource
|
| delete fDM;
|
| fDM = NULL;
|
| - return NULL;
|
| + return false;
|
| }
|
| - return fDM->data();
|
| +
|
| +SUCCESS:
|
| + rec->fPixels = fDM->data();
|
| + rec->fColorTable = NULL;
|
| + rec->fRowBytes = fRB;
|
| + return true;
|
| }
|
|
|
| void SkOneShotDiscardablePixelRef::onUnlockPixels() {
|
| @@ -258,7 +259,7 @@ void SkOneShotDiscardablePixelRef::onUnlockPixels() {
|
| }
|
|
|
| size_t SkOneShotDiscardablePixelRef::getAllocatedSizeInBytes() const {
|
| - return fInfo.fHeight * fRB;
|
| + return this->info().getSafeSize(fRB);
|
| }
|
|
|
| class SkScaledImageCacheDiscardableAllocator : public SkBitmap::Allocator {
|
|
|