/* * 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 SkPurgeableImageCache_DEFINED #define SkPurgeableImageCache_DEFINED #include "SkImageCache.h" #ifdef SK_DEBUG #include "SkTDArray.h" #endif /** * Implementation for SkImageCache that uses system defined purgeable memory. */ class SkPurgeableImageCache : public SkImageCache { public: SK_DECLARE_INST_COUNT(SkPurgeableImageCache) static SkImageCache* Create(); virtual void* allocAndPinCache(size_t bytes, ID*) SK_OVERRIDE; virtual void* pinCache(ID, SkImageCache::DataStatus*) SK_OVERRIDE; virtual void releaseCache(ID) SK_OVERRIDE; virtual void throwAwayCache(ID) SK_OVERRIDE; #ifdef SK_DEBUG virtual MemoryStatus getMemoryStatus(ID) const SK_OVERRIDE; virtual void purgeAllUnpinnedCaches() SK_OVERRIDE; virtual ~SkPurgeableImageCache(); #endif private: SkPurgeableImageCache(); #ifdef SK_DEBUG SkTDArray fRecs; int findRec(ID) const; #endif void removeRec(ID); }; #endif // SkPurgeableImageCache_DEFINED