OSDN Git Service

Remove usage of Texture::cleanup in PathCache
authorChris Craik <ccraik@google.com>
Tue, 12 May 2015 01:23:09 +0000 (18:23 -0700)
committerChris Craik <ccraik@google.com>
Tue, 12 May 2015 02:10:24 +0000 (19:10 -0700)
bug:21039605

Was causing double-deletes, is unneeded.

Change-Id: I5c0a21d076fae7039d777ca09b21492f97fea98b

libs/hwui/PathCache.cpp
libs/hwui/PathCache.h

index 74964f6..8f5fea3 100644 (file)
@@ -142,7 +142,7 @@ PathCache::PathCache():
     char property[PROPERTY_VALUE_MAX];
     if (property_get(PROPERTY_PATH_CACHE_SIZE, property, nullptr) > 0) {
         INIT_LOGD("  Setting %s cache size to %sMB", name, property);
-        setMaxSize(MB(atof(property)));
+        mMaxSize = MB(atof(property));
     } else {
         INIT_LOGD("  Using default %s cache size of %.2fMB", name, DEFAULT_PATH_CACHE_SIZE);
     }
@@ -172,13 +172,6 @@ uint32_t PathCache::getMaxSize() {
     return mMaxSize;
 }
 
-void PathCache::setMaxSize(uint32_t maxSize) {
-    mMaxSize = maxSize;
-    while (mSize > mMaxSize) {
-        mCache.removeOldest();
-    }
-}
-
 ///////////////////////////////////////////////////////////////////////////////
 // Callbacks
 ///////////////////////////////////////////////////////////////////////////////
@@ -267,24 +260,18 @@ void PathCache::generateTexture(const PathDescription& entry, SkBitmap* bitmap,
         PathTexture* texture, bool addToCache) {
     generateTexture(*bitmap, texture);
 
+    // Note here that we upload to a texture even if it's bigger than mMaxSize.
+    // Such an entry in mCache will only be temporary, since it will be evicted
+    // immediately on trim, or on any other Path entering the cache.
     uint32_t size = texture->width * texture->height;
-    if (size < mMaxSize) {
-        mSize += size;
-        PATH_LOGD("PathCache::get/create: name, size, mSize = %d, %d, %d",
-                texture->id, size, mSize);
-        if (mDebugEnabled) {
-            ALOGD("Shape created, size = %d", size);
-        }
-        if (addToCache) {
-            mCache.put(entry, texture);
-        }
-    } else {
-        // It's okay to add a texture that's bigger than the cache since
-        // we'll trim the cache later when addToCache is set to false
-        if (!addToCache) {
-            mSize += size;
-        }
-        texture->cleanup = true;
+    mSize += size;
+    PATH_LOGD("PathCache::get/create: name, size, mSize = %d, %d, %d",
+            texture->id, size, mSize);
+    if (mDebugEnabled) {
+        ALOGD("Shape created, size = %d", size);
+    }
+    if (addToCache) {
+        mCache.put(entry, texture);
     }
 }
 
index 4297693..7014863 100644 (file)
@@ -186,10 +186,6 @@ public:
     void clear();
 
     /**
-     * Sets the maximum size of the cache in bytes.
-     */
-    void setMaxSize(uint32_t maxSize);
-    /**
      * Returns the maximum size of the cache in bytes.
      */
     uint32_t getMaxSize();