/*
* Copyright 2013 Google Inc .
*
* Use of this source code is governed by a BSD - style license that can be
* found in the LICENSE file .
*/
#ifndef SkDiscardableMemoryPool_DEFINED
#define SkDiscardableMemoryPool_DEFINED
#include "include/private/base/SkMutex.h"
#include "include/private/chromium/SkDiscardableMemory.h"
#ifndef SK_LAZY_CACHE_STATS
#ifdef SK_DEBUG
#define SK_LAZY_CACHE_STATS 1
#else
#define SK_LAZY_CACHE_STATS 0
#endif
#endif
/**
* An implementation of Discardable Memory that manages a fixed - size
* budget of memory . When the allocated memory exceeds this size ,
* unlocked blocks of memory are purged . If all memory is locked , it
* can exceed the memory - use budget .
*/
class SkDiscardableMemoryPool : public SkDiscardableMemory::Factory {
public:
virtual size_t getRAMUsed() = 0 ;
virtual void setRAMBudget(size_t budget) = 0 ;
virtual size_t getRAMBudget() = 0 ;
/** purges all unlocked DMs */
virtual void dumpPool() = 0 ;
#if SK_LAZY_CACHE_STATS
/**
* These two values are a count of the number of successful and
* failed calls to SkDiscardableMemory : : lock ( ) for all DMs managed
* by this pool .
*/
virtual int getCacheHits() = 0 ;
virtual int getCacheMisses() = 0 ;
virtual void resetCacheHitsAndMisses() = 0 ;
#endif
/**
* This non - global pool can be used for unit tests to verify that
* the pool works .
*/
static sk_sp<SkDiscardableMemoryPool> Make(size_t size);
};
/**
* Returns ( and creates if needed ) a threadsafe global
* SkDiscardableMemoryPool .
*/
SkDiscardableMemoryPool* SkGetGlobalDiscardableMemoryPool();
#if !defined (SK_DEFAULT_GLOBAL_DISCARDABLE_MEMORY_POOL_SIZE)
#define SK_DEFAULT_GLOBAL_DISCARDABLE_MEMORY_POOL_SIZE (128 * 1024 * 1024 )
#endif
#endif // SkDiscardableMemoryPool_DEFINED
Messung V0.5 in Prozent C=91 H=99 G=94
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland