summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDerek Sollenberger <djsollen@google.com>2014-12-09 10:54:16 -0500
committerDerek Sollenberger <djsollen@google.com>2014-12-09 18:36:42 +0000
commitee648e517f09cccf59010a7423240a38aaeb2c04 (patch)
tree76571a17e882b02ba9c4f26850c373849a8b3a07
parentcdcabe4cd6510e1009c01f5266da74b0ae1f1b32 (diff)
downloadframeworks_base-ee648e517f09cccf59010a7423240a38aaeb2c04.zip
frameworks_base-ee648e517f09cccf59010a7423240a38aaeb2c04.tar.gz
frameworks_base-ee648e517f09cccf59010a7423240a38aaeb2c04.tar.bz2
Remove unnecessary/erroneous reference counting
The SkBitmap* used by HWUI holds a reference to the PixelRef (which in turn holds the colorTable) so keeping an additional ref is not only unnecessary, but also potentially problematic. If a bitmap changes its pixelRef after it has been added to a displayList, then we end up with unbalanced ref/unref calls that cause the newly added PixelRef to be unref'd and prematurely deleted, while the original PixelRef is leaked. bug: 18659976 Change-Id: I34a06152e7bb2d733249a207dafd36b9b5dc0712
-rw-r--r--libs/hwui/ResourceCache.cpp8
1 files changed, 0 insertions, 8 deletions
diff --git a/libs/hwui/ResourceCache.cpp b/libs/hwui/ResourceCache.cpp
index 717ce9a..31bd637 100644
--- a/libs/hwui/ResourceCache.cpp
+++ b/libs/hwui/ResourceCache.cpp
@@ -68,8 +68,6 @@ void ResourceCache::incrementRefcount(void* resource, ResourceType resourceType)
}
void ResourceCache::incrementRefcount(const SkBitmap* bitmapResource) {
- bitmapResource->pixelRef()->globalRef();
- SkSafeRef(bitmapResource->getColorTable());
incrementRefcount((void*) bitmapResource, kBitmap);
}
@@ -92,8 +90,6 @@ void ResourceCache::incrementRefcountLocked(void* resource, ResourceType resourc
}
void ResourceCache::incrementRefcountLocked(const SkBitmap* bitmapResource) {
- bitmapResource->pixelRef()->globalRef();
- SkSafeRef(bitmapResource->getColorTable());
incrementRefcountLocked((void*) bitmapResource, kBitmap);
}
@@ -111,8 +107,6 @@ void ResourceCache::decrementRefcount(void* resource) {
}
void ResourceCache::decrementRefcount(const SkBitmap* bitmapResource) {
- bitmapResource->pixelRef()->globalUnref();
- SkSafeUnref(bitmapResource->getColorTable());
decrementRefcount((void*) bitmapResource);
}
@@ -138,8 +132,6 @@ void ResourceCache::decrementRefcountLocked(void* resource) {
}
void ResourceCache::decrementRefcountLocked(const SkBitmap* bitmapResource) {
- bitmapResource->pixelRef()->globalUnref();
- SkSafeUnref(bitmapResource->getColorTable());
decrementRefcountLocked((void*) bitmapResource);
}