diff options
author | 2014-11-25 15:38:24 +0000 | |
---|---|---|
committer | 2014-11-25 15:38:24 +0000 | |
commit | 89a63f02f5d0814435e72b515b792bc6737014dc (patch) | |
tree | d154f6cfce5fde3a4df3231bf0a339f26b94aa20 /libs/hwui/ResourceCache.cpp | |
parent | a05d4a4bb38df792cbf19a0f1e198a26f1509281 (diff) | |
parent | 0c31d97a38909e85e0df6cdc29469dbb1580ed4b (diff) |
am 0c31d97a: Merge "Switch TextureCache to SkPixelRef::fStableId" into lmp-mr1-dev
* commit '0c31d97a38909e85e0df6cdc29469dbb1580ed4b':
Switch TextureCache to SkPixelRef::fStableId
Diffstat (limited to 'libs/hwui/ResourceCache.cpp')
-rw-r--r-- | libs/hwui/ResourceCache.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/libs/hwui/ResourceCache.cpp b/libs/hwui/ResourceCache.cpp index 12d4928ad78c..717ce9a6f690 100644 --- a/libs/hwui/ResourceCache.cpp +++ b/libs/hwui/ResourceCache.cpp @@ -185,10 +185,9 @@ void ResourceCache::destructorLocked(const SkBitmap* resource) { if (ref == NULL) { // If we're not tracking this resource, just delete it if (Caches::hasInstance()) { - Caches::getInstance().textureCache.removeDeferred(resource); - } else { - delete resource; + Caches::getInstance().textureCache.releaseTexture(resource); } + delete resource; return; } ref->destroyed = true; @@ -238,6 +237,9 @@ bool ResourceCache::recycle(SkBitmap* resource) { bool ResourceCache::recycleLocked(SkBitmap* resource) { ssize_t index = mCache->indexOfKey(resource); if (index < 0) { + if (Caches::hasInstance()) { + Caches::getInstance().textureCache.releaseTexture(resource); + } // not tracking this resource; just recycle the pixel data resource->setPixels(NULL, NULL); return true; @@ -262,17 +264,20 @@ bool ResourceCache::recycleLocked(SkBitmap* resource) { */ void ResourceCache::deleteResourceReferenceLocked(const void* resource, ResourceReference* ref) { if (ref->recycled && ref->resourceType == kBitmap) { - ((SkBitmap*) resource)->setPixels(NULL, NULL); + SkBitmap* bitmap = (SkBitmap*) resource; + if (Caches::hasInstance()) { + Caches::getInstance().textureCache.releaseTexture(bitmap); + } + bitmap->setPixels(NULL, NULL); } if (ref->destroyed) { switch (ref->resourceType) { case kBitmap: { SkBitmap* bitmap = (SkBitmap*) resource; if (Caches::hasInstance()) { - Caches::getInstance().textureCache.removeDeferred(bitmap); - } else { - delete bitmap; + Caches::getInstance().textureCache.releaseTexture(bitmap); } + delete bitmap; } break; case kPath: { |