blob: 0516ff18eff5a40c90d89a80f3156b9f368e29e4 [file] [log] [blame]
scroggo@google.combb281f72013-03-18 21:37:39 +00001/*
2 * Copyright 2013 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkPurgeableImageCache_DEFINED
9#define SkPurgeableImageCache_DEFINED
10
11#include "SkImageCache.h"
12
13#ifdef SK_DEBUG
14 #include "SkTDArray.h"
15#endif
16
17/**
18 * Implementation for SkImageCache that uses system defined purgeable memory.
19 */
20class SkPurgeableImageCache : public SkImageCache {
21
22public:
23 static SkImageCache* Create();
24
25 virtual void* allocAndPinCache(size_t bytes, intptr_t* ID) SK_OVERRIDE;
26 virtual void* pinCache(intptr_t ID, SkImageCache::DataStatus*) SK_OVERRIDE;
27 virtual void releaseCache(intptr_t ID) SK_OVERRIDE;
28 virtual void throwAwayCache(intptr_t ID) SK_OVERRIDE;
29
30#ifdef SK_DEBUG
31 virtual MemoryStatus getMemoryStatus(intptr_t ID) const SK_OVERRIDE;
32 virtual void purgeAllUnpinnedCaches() SK_OVERRIDE;
33 virtual ~SkPurgeableImageCache();
34#endif
35
36private:
37 SkPurgeableImageCache();
38
39#ifdef SK_DEBUG
40 SkTDArray<intptr_t> fRecs;
41 int findRec(intptr_t) const;
42#endif
43 void removeRec(intptr_t);
44};
45#endif // SkPurgeableImageCache_DEFINED