diff options
author | Romain Guy <romainguy@google.com> | 2012-09-07 14:01:30 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-09-07 14:01:31 -0700 |
commit | 55e6b77bda7da1684ca32493d9e03184bd441dab (patch) | |
tree | 452dd95ab11bd568485f2ea36276395cd90f111e /libs/hwui/ResourceCache.h | |
parent | 417984dc0d27bdd1b33ae3115593f609961a0c15 (diff) | |
parent | 58ecc204fbcacef34806290492384677a330d4d4 (diff) | |
download | frameworks_base-55e6b77bda7da1684ca32493d9e03184bd441dab.zip frameworks_base-55e6b77bda7da1684ca32493d9e03184bd441dab.tar.gz frameworks_base-55e6b77bda7da1684ca32493d9e03184bd441dab.tar.bz2 |
Merge "Reduce the number of locks acquired by display lists" into jb-mr1-dev
Diffstat (limited to 'libs/hwui/ResourceCache.h')
-rw-r--r-- | libs/hwui/ResourceCache.h | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/libs/hwui/ResourceCache.h b/libs/hwui/ResourceCache.h index 8cf466b..60ffa7d 100644 --- a/libs/hwui/ResourceCache.h +++ b/libs/hwui/ResourceCache.h @@ -52,28 +52,59 @@ public: }; class ANDROID_API ResourceCache { - KeyedVector<void *, ResourceReference *>* mCache; public: ResourceCache(); ~ResourceCache(); + + /** + * When using these two methods, make sure to only invoke the *Locked() + * variants of increment/decrementRefcount(), recyle() and destructor() + */ + void lock(); + void unlock(); + void incrementRefcount(SkPath* resource); void incrementRefcount(SkBitmap* resource); void incrementRefcount(SkiaShader* resource); void incrementRefcount(SkiaColorFilter* resource); - void incrementRefcount(const void* resource, ResourceType resourceType); - void decrementRefcount(void* resource); + + void incrementRefcountLocked(SkPath* resource); + void incrementRefcountLocked(SkBitmap* resource); + void incrementRefcountLocked(SkiaShader* resource); + void incrementRefcountLocked(SkiaColorFilter* resource); + void decrementRefcount(SkBitmap* resource); void decrementRefcount(SkPath* resource); void decrementRefcount(SkiaShader* resource); void decrementRefcount(SkiaColorFilter* resource); - void recycle(SkBitmap* resource); + + void decrementRefcountLocked(SkBitmap* resource); + void decrementRefcountLocked(SkPath* resource); + void decrementRefcountLocked(SkiaShader* resource); + void decrementRefcountLocked(SkiaColorFilter* resource); + void destructor(SkPath* resource); void destructor(SkBitmap* resource); void destructor(SkiaShader* resource); void destructor(SkiaColorFilter* resource); + + void destructorLocked(SkPath* resource); + void destructorLocked(SkBitmap* resource); + void destructorLocked(SkiaShader* resource); + void destructorLocked(SkiaColorFilter* resource); + + void recycle(SkBitmap* resource); + void recycleLocked(SkBitmap* resource); + private: void deleteResourceReference(void* resource, ResourceReference* ref); + void incrementRefcount(void* resource, ResourceType resourceType); + void incrementRefcountLocked(void* resource, ResourceType resourceType); + + void decrementRefcount(void* resource); + void decrementRefcountLocked(void* resource); + void logCache(); /** @@ -82,6 +113,8 @@ private: * or a reference queue finalization thread. */ mutable Mutex mLock; + + KeyedVector<void*, ResourceReference*>* mCache; }; }; // namespace uirenderer |