Index: src/images/SkImageRefPool.cpp |
diff --git a/src/images/SkImageRefPool.cpp b/src/images/SkImageRefPool.cpp |
deleted file mode 100644 |
index 0a3d7bf8cc4ba5a74dea379388b023eb206ab720..0000000000000000000000000000000000000000 |
--- a/src/images/SkImageRefPool.cpp |
+++ /dev/null |
@@ -1,192 +0,0 @@ |
- |
-/* |
- * Copyright 2011 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
-#include "SkImageRefPool.h" |
-#include "SkImageRef.h" |
-#include "SkThread.h" |
- |
-SkImageRefPool::SkImageRefPool() { |
- fRAMBudget = 0; // means no explicit limit |
- fRAMUsed = 0; |
- fCount = 0; |
- fHead = fTail = NULL; |
-} |
- |
-SkImageRefPool::~SkImageRefPool() { |
- // SkASSERT(NULL == fHead); |
-} |
- |
-void SkImageRefPool::setRAMBudget(size_t size) { |
- if (fRAMBudget != size) { |
- fRAMBudget = size; |
- this->purgeIfNeeded(); |
- } |
-} |
- |
-void SkImageRefPool::justAddedPixels(SkImageRef* ref) { |
-#ifdef DUMP_IMAGEREF_LIFECYCLE |
- SkDebugf("=== ImagePool: add pixels %s [%d %d %d] bytes=%d heap=%d\n", |
- ref->getURI(), |
- ref->fBitmap.width(), ref->fBitmap.height(), |
- ref->fBitmap.bytesPerPixel(), |
- ref->fBitmap.getSize(), (int)fRAMUsed); |
-#endif |
- fRAMUsed += ref->ramUsed(); |
- this->purgeIfNeeded(); |
-} |
- |
-void SkImageRefPool::canLosePixels(SkImageRef* ref) { |
- // the refs near fHead have recently been released (used) |
- // if we purge, we purge from the tail |
- this->detach(ref); |
- this->addToHead(ref); |
- this->purgeIfNeeded(); |
-} |
- |
-void SkImageRefPool::purgeIfNeeded() { |
- // do nothing if we have a zero-budget (i.e. unlimited) |
- if (fRAMBudget != 0) { |
- this->setRAMUsed(fRAMBudget); |
- } |
-} |
- |
-void SkImageRefPool::setRAMUsed(size_t limit) { |
- SkImageRef* ref = fTail; |
- |
- while (NULL != ref && fRAMUsed > limit) { |
- // only purge it if its pixels are unlocked |
- if (!ref->isLocked() && ref->fBitmap.getPixels()) { |
- size_t size = ref->ramUsed(); |
- SkASSERT(size <= fRAMUsed); |
- fRAMUsed -= size; |
- |
-#ifdef DUMP_IMAGEREF_LIFECYCLE |
- SkDebugf("=== ImagePool: purge %s [%d %d %d] bytes=%d heap=%d\n", |
- ref->getURI(), |
- ref->fBitmap.width(), ref->fBitmap.height(), |
- ref->fBitmap.bytesPerPixel(), |
- (int)size, (int)fRAMUsed); |
-#endif |
- |
- // remember the bitmap config (don't call reset), |
- // just clear the pixel memory |
- ref->fBitmap.setPixels(NULL); |
- SkASSERT(NULL == ref->fBitmap.getPixels()); |
- } |
- ref = ref->fPrev; |
- } |
-} |
- |
-/////////////////////////////////////////////////////////////////////////////// |
- |
-void SkImageRefPool::addToHead(SkImageRef* ref) { |
- ref->fNext = fHead; |
- ref->fPrev = NULL; |
- |
- if (fHead) { |
- SkASSERT(NULL == fHead->fPrev); |
- fHead->fPrev = ref; |
- } |
- fHead = ref; |
- |
- if (NULL == fTail) { |
- fTail = ref; |
- } |
- fCount += 1; |
- SkASSERT(computeCount() == fCount); |
- |
- fRAMUsed += ref->ramUsed(); |
-} |
- |
-void SkImageRefPool::addToTail(SkImageRef* ref) { |
- ref->fNext = NULL; |
- ref->fPrev = fTail; |
- |
- if (fTail) { |
- SkASSERT(NULL == fTail->fNext); |
- fTail->fNext = ref; |
- } |
- fTail = ref; |
- |
- if (NULL == fHead) { |
- fHead = ref; |
- } |
- fCount += 1; |
- SkASSERT(computeCount() == fCount); |
- |
- fRAMUsed += ref->ramUsed(); |
-} |
- |
-void SkImageRefPool::detach(SkImageRef* ref) { |
- SkASSERT(fCount > 0); |
- |
- if (fHead == ref) { |
- fHead = ref->fNext; |
- } |
- if (fTail == ref) { |
- fTail = ref->fPrev; |
- } |
- if (ref->fPrev) { |
- ref->fPrev->fNext = ref->fNext; |
- } |
- if (ref->fNext) { |
- ref->fNext->fPrev = ref->fPrev; |
- } |
- |
- ref->fNext = ref->fPrev = NULL; |
- |
- fCount -= 1; |
- SkASSERT(computeCount() == fCount); |
- |
- SkASSERT(fRAMUsed >= ref->ramUsed()); |
- fRAMUsed -= ref->ramUsed(); |
-} |
- |
-int SkImageRefPool::computeCount() const { |
- SkImageRef* ref = fHead; |
- int count = 0; |
- |
- while (ref != NULL) { |
- count += 1; |
- ref = ref->fNext; |
- } |
- |
-#ifdef SK_DEBUG |
- ref = fTail; |
- int count2 = 0; |
- |
- while (ref != NULL) { |
- count2 += 1; |
- ref = ref->fPrev; |
- } |
- SkASSERT(count2 == count); |
-#endif |
- |
- return count; |
-} |
- |
-/////////////////////////////////////////////////////////////////////////////// |
- |
-#include "SkStream.h" |
- |
-void SkImageRefPool::dump() const { |
-#if defined(SK_DEBUG) || defined(DUMP_IMAGEREF_LIFECYCLE) |
- SkDebugf("ImagePool dump: bugdet: %d used: %d count: %d\n", |
- (int)fRAMBudget, (int)fRAMUsed, fCount); |
- |
- SkImageRef* ref = fHead; |
- |
- while (ref != NULL) { |
- SkDebugf(" [%3d %3d %d] ram=%d data=%d locked=%d %s\n", ref->fBitmap.width(), |
- ref->fBitmap.height(), ref->fBitmap.config(), |
- ref->ramUsed(), (int)ref->fStream->getLength(), |
- ref->isLocked(), ref->getURI()); |
- |
- ref = ref->fNext; |
- } |
-#endif |
-} |