| Index: src/lazy/SkDiscardableMemoryPool.cpp
|
| diff --git a/src/lazy/SkDiscardableMemoryPool.cpp b/src/lazy/SkDiscardableMemoryPool.cpp
|
| index 1d63a0bad710985b7dc2ab127554e77906075753..4fb8ae4fe1fbc626453bf6eecd009dac5183b9fa 100644
|
| --- a/src/lazy/SkDiscardableMemoryPool.cpp
|
| +++ b/src/lazy/SkDiscardableMemoryPool.cpp
|
| @@ -7,7 +7,7 @@
|
|
|
| #include "SkDiscardableMemory.h"
|
| #include "SkDiscardableMemoryPool.h"
|
| -#include "SkLazyPtr.h"
|
| +#include "SkOnce.h"
|
| #include "SkTInternalLList.h"
|
| #include "SkThread.h"
|
|
|
| @@ -248,20 +248,27 @@
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| SK_DECLARE_STATIC_MUTEX(gMutex);
|
| -SkDiscardableMemoryPool* create_global_pool() {
|
| - return SkDiscardableMemoryPool::Create(SK_DEFAULT_GLOBAL_DISCARDABLE_MEMORY_POOL_SIZE,
|
| - &gMutex);
|
| -}
|
| -
|
| +SkDiscardableMemoryPool* gPool = NULL;
|
| +void create_global_pool(int) {
|
| + SkASSERT(NULL == gPool);
|
| + gPool = SkDiscardableMemoryPool::Create(
|
| + SK_DEFAULT_GLOBAL_DISCARDABLE_MEMORY_POOL_SIZE, &gMutex);
|
| +}
|
| +void cleanup_global_pool() {
|
| + gPool->unref();
|
| +}
|
| } // namespace
|
|
|
| -SkDiscardableMemoryPool* SkDiscardableMemoryPool::Create(size_t size, SkBaseMutex* mutex) {
|
| +SkDiscardableMemoryPool* SkDiscardableMemoryPool::Create(
|
| + size_t size, SkBaseMutex* mutex) {
|
| return SkNEW_ARGS(DiscardableMemoryPool, (size, mutex));
|
| }
|
|
|
| SkDiscardableMemoryPool* SkGetGlobalDiscardableMemoryPool() {
|
| - SK_DECLARE_STATIC_LAZY_PTR(SkDiscardableMemoryPool, global, create_global_pool);
|
| - return global.get();
|
| + SK_DECLARE_STATIC_ONCE(create_pool_once);
|
| + SkOnce(&create_pool_once, create_global_pool, 0, &cleanup_global_pool);
|
| + SkASSERT(NULL != gPool);
|
| + return gPool;
|
| }
|
|
|
| // defined in SkImageGenerator.h
|
|
|