blob: 24525b0e505e047d6594d9198fe3819263cf10dd [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:
commit-bot@chromium.orgef284a82013-07-11 22:29:29 +000023 SK_DECLARE_INST_COUNT(SkPurgeableImageCache)
24
scroggo@google.combb281f72013-03-18 21:37:39 +000025 static SkImageCache* Create();
26
reed@google.com6e8b7dd2013-07-09 21:31:54 +000027 virtual void* allocAndPinCache(size_t bytes, ID*) SK_OVERRIDE;
28 virtual void* pinCache(ID, SkImageCache::DataStatus*) SK_OVERRIDE;
29 virtual void releaseCache(ID) SK_OVERRIDE;
30 virtual void throwAwayCache(ID) SK_OVERRIDE;
scroggo@google.combb281f72013-03-18 21:37:39 +000031
32#ifdef SK_DEBUG
reed@google.com6e8b7dd2013-07-09 21:31:54 +000033 virtual MemoryStatus getMemoryStatus(ID) const SK_OVERRIDE;
scroggo@google.combb281f72013-03-18 21:37:39 +000034 virtual void purgeAllUnpinnedCaches() SK_OVERRIDE;
35 virtual ~SkPurgeableImageCache();
36#endif
37
38private:
39 SkPurgeableImageCache();
40
41#ifdef SK_DEBUG
reed@google.com6e8b7dd2013-07-09 21:31:54 +000042 SkTDArray<ID> fRecs;
43 int findRec(ID) const;
scroggo@google.combb281f72013-03-18 21:37:39 +000044#endif
reed@google.com6e8b7dd2013-07-09 21:31:54 +000045 void removeRec(ID);
scroggo@google.combb281f72013-03-18 21:37:39 +000046};
47#endif // SkPurgeableImageCache_DEFINED