17982fd38da85dbe918666aa14183007063498fe6scroggo@google.com/* 27982fd38da85dbe918666aa14183007063498fe6scroggo@google.com * Copyright 2013 Google Inc. 37982fd38da85dbe918666aa14183007063498fe6scroggo@google.com * 47982fd38da85dbe918666aa14183007063498fe6scroggo@google.com * Use of this source code is governed by a BSD-style license that can be 57982fd38da85dbe918666aa14183007063498fe6scroggo@google.com * found in the LICENSE file. 67982fd38da85dbe918666aa14183007063498fe6scroggo@google.com */ 77982fd38da85dbe918666aa14183007063498fe6scroggo@google.com 87982fd38da85dbe918666aa14183007063498fe6scroggo@google.com#ifndef SkPurgeableImageCache_DEFINED 97982fd38da85dbe918666aa14183007063498fe6scroggo@google.com#define SkPurgeableImageCache_DEFINED 107982fd38da85dbe918666aa14183007063498fe6scroggo@google.com 117982fd38da85dbe918666aa14183007063498fe6scroggo@google.com#include "SkImageCache.h" 127982fd38da85dbe918666aa14183007063498fe6scroggo@google.com 137982fd38da85dbe918666aa14183007063498fe6scroggo@google.com#ifdef SK_DEBUG 147982fd38da85dbe918666aa14183007063498fe6scroggo@google.com #include "SkTDArray.h" 157982fd38da85dbe918666aa14183007063498fe6scroggo@google.com#endif 167982fd38da85dbe918666aa14183007063498fe6scroggo@google.com 177982fd38da85dbe918666aa14183007063498fe6scroggo@google.com/** 187982fd38da85dbe918666aa14183007063498fe6scroggo@google.com * Implementation for SkImageCache that uses system defined purgeable memory. 197982fd38da85dbe918666aa14183007063498fe6scroggo@google.com */ 207982fd38da85dbe918666aa14183007063498fe6scroggo@google.comclass SkPurgeableImageCache : public SkImageCache { 217982fd38da85dbe918666aa14183007063498fe6scroggo@google.com 227982fd38da85dbe918666aa14183007063498fe6scroggo@google.compublic: 238a88bbd8fc321b3402816621ec4971d721197840commit-bot@chromium.org SK_DECLARE_INST_COUNT(SkPurgeableImageCache) 248a88bbd8fc321b3402816621ec4971d721197840commit-bot@chromium.org 257982fd38da85dbe918666aa14183007063498fe6scroggo@google.com static SkImageCache* Create(); 267982fd38da85dbe918666aa14183007063498fe6scroggo@google.com 27b253071936aa652bfd64bcfbb10a45521df133bcreed@google.com virtual void* allocAndPinCache(size_t bytes, ID*) SK_OVERRIDE; 28b253071936aa652bfd64bcfbb10a45521df133bcreed@google.com virtual void* pinCache(ID, SkImageCache::DataStatus*) SK_OVERRIDE; 29b253071936aa652bfd64bcfbb10a45521df133bcreed@google.com virtual void releaseCache(ID) SK_OVERRIDE; 30b253071936aa652bfd64bcfbb10a45521df133bcreed@google.com virtual void throwAwayCache(ID) SK_OVERRIDE; 317982fd38da85dbe918666aa14183007063498fe6scroggo@google.com 327982fd38da85dbe918666aa14183007063498fe6scroggo@google.com#ifdef SK_DEBUG 33b253071936aa652bfd64bcfbb10a45521df133bcreed@google.com virtual MemoryStatus getMemoryStatus(ID) const SK_OVERRIDE; 347982fd38da85dbe918666aa14183007063498fe6scroggo@google.com virtual void purgeAllUnpinnedCaches() SK_OVERRIDE; 357982fd38da85dbe918666aa14183007063498fe6scroggo@google.com virtual ~SkPurgeableImageCache(); 367982fd38da85dbe918666aa14183007063498fe6scroggo@google.com#endif 377982fd38da85dbe918666aa14183007063498fe6scroggo@google.com 387982fd38da85dbe918666aa14183007063498fe6scroggo@google.comprivate: 397982fd38da85dbe918666aa14183007063498fe6scroggo@google.com SkPurgeableImageCache(); 407982fd38da85dbe918666aa14183007063498fe6scroggo@google.com 417982fd38da85dbe918666aa14183007063498fe6scroggo@google.com#ifdef SK_DEBUG 42b253071936aa652bfd64bcfbb10a45521df133bcreed@google.com SkTDArray<ID> fRecs; 43b253071936aa652bfd64bcfbb10a45521df133bcreed@google.com int findRec(ID) const; 447982fd38da85dbe918666aa14183007063498fe6scroggo@google.com#endif 45b253071936aa652bfd64bcfbb10a45521df133bcreed@google.com void removeRec(ID); 467982fd38da85dbe918666aa14183007063498fe6scroggo@google.com}; 477982fd38da85dbe918666aa14183007063498fe6scroggo@google.com#endif // SkPurgeableImageCache_DEFINED 48