summaryrefslogtreecommitdiff
path: root/libs/hwui/ResourceCache.cpp
diff options
context:
space:
mode:
author John Reck <jreck@google.com> 2014-11-24 15:21:28 -0800
committer John Reck <jreck@google.com> 2014-11-24 15:24:02 -0800
commit71d08a07189c2b433080203895d9d5e936b16b9e (patch)
tree88079370391f3e5b8e7610911b247a5db50abf97 /libs/hwui/ResourceCache.cpp
parent9be80ee53ff5a3df51537f10b3d63f1f7f0ccd3e (diff)
Switch TextureCache to SkPixelRef::fStableId
Bug: 18245805 Change-Id: I08e6792dbeed86b13e569c7f2137de0e50dc2763
Diffstat (limited to 'libs/hwui/ResourceCache.cpp')
-rw-r--r--libs/hwui/ResourceCache.cpp19
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: {