| Index: src/gpu/GrMemoryPool.cpp
|
| diff --git a/src/gpu/GrMemoryPool.cpp b/src/gpu/GrMemoryPool.cpp
|
| index 5009f20152d5d7813956d4539f7e86c21adc7a48..ea64c2994af82dd195b3a22460580ec2eff674b7 100644
|
| --- a/src/gpu/GrMemoryPool.cpp
|
| +++ b/src/gpu/GrMemoryPool.cpp
|
| @@ -102,6 +102,27 @@ void GrMemoryPool::release(void* p) {
|
| VALIDATE;
|
| }
|
|
|
| +void GrMemoryPool::releaseAll() {
|
| + VALIDATE;
|
| + while (fTail->fPrev) {
|
| + BlockHeader* prev = fTail->fPrev;
|
| + SkDEBUGCODE(fAllocationCnt -= fTail->fLiveCount);
|
| + DeleteBlock(fTail);
|
| + fTail = prev;
|
| + fTail->fNext = NULL;
|
| + }
|
| + // now 'free' head block
|
| + SkDEBUGCODE(fAllocationCnt -= fHead->fLiveCount);
|
| + fHead->fCurrPtr = reinterpret_cast<intptr_t>(fHead) +
|
| + kHeaderSize;
|
| + fHead->fLiveCount = 0;
|
| + fHead->fFreeSize = fPreallocSize;
|
| + SkASSERT(0 == fAllocationCnt);
|
| + SkASSERT(fHead == fTail);
|
| + SkASSERT(0 == fHead->fLiveCount);
|
| + VALIDATE;
|
| +}
|
| +
|
| GrMemoryPool::BlockHeader* GrMemoryPool::CreateBlock(size_t size) {
|
| BlockHeader* block =
|
| reinterpret_cast<BlockHeader*>(sk_malloc_throw(size + kHeaderSize));
|
|
|