From fe48f65922d4a3cc4aefe058cee5acec51504a20 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Thu, 11 Nov 2010 15:36:56 -0800 Subject: Free resources only from the GL context thread. Bug #3179882 Resources were freed following garbage collections on a worker thread. This worker thread had no EGL context, which would cause the renderer to incorrectly assume that the memory was liberated. Change-Id: Ifdb51f94ddf42641e8654522787bfac532976c7c --- libs/hwui/ResourceCache.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'libs/hwui/ResourceCache.cpp') diff --git a/libs/hwui/ResourceCache.cpp b/libs/hwui/ResourceCache.cpp index 47c5d489b3e8..9f189482941e 100644 --- a/libs/hwui/ResourceCache.cpp +++ b/libs/hwui/ResourceCache.cpp @@ -126,7 +126,7 @@ void ResourceCache::destructor(SkBitmap* resource) { if (ref == NULL) { // If we're not tracking this resource, just delete it if (Caches::hasInstance()) { - Caches::getInstance().textureCache.remove(resource); + Caches::getInstance().textureCache.removeDeferred(resource); } delete resource; return; @@ -143,7 +143,7 @@ void ResourceCache::destructor(SkiaShader* resource) { if (ref == NULL) { // If we're not tracking this resource, just delete it if (Caches::hasInstance()) { - Caches::getInstance().gradientCache.remove(resource->getSkShader()); + Caches::getInstance().gradientCache.removeDeferred(resource->getSkShader()); } delete resource; return; @@ -179,7 +179,7 @@ void ResourceCache::deleteResourceReference(void* resource, ResourceReference* r { SkBitmap* bitmap = (SkBitmap*)resource; if (Caches::hasInstance()) { - Caches::getInstance().textureCache.remove(bitmap); + Caches::getInstance().textureCache.removeDeferred(bitmap); } delete bitmap; } @@ -188,7 +188,7 @@ void ResourceCache::deleteResourceReference(void* resource, ResourceReference* r { SkiaShader* shader = (SkiaShader*)resource; if (Caches::hasInstance()) { - Caches::getInstance().gradientCache.remove(shader->getSkShader()); + Caches::getInstance().gradientCache.removeDeferred(shader->getSkShader()); } delete shader; } -- cgit v1.2.3-59-g8ed1b