diff options
author | 2010-10-12 18:15:42 -0700 | |
---|---|---|
committer | 2010-10-12 18:15:42 -0700 | |
commit | e91080581f467d55913a8c5ab53dedc2dab2e5b6 (patch) | |
tree | ef4bfc31fac147b8a36b3c3d6593726106825032 /libs/hwui/LayerCache.cpp | |
parent | 1f114a55b5eaaa81bd302c9ad851362512b61e2f (diff) |
Tweak layers caching for better performance in Launcher.
Change-Id: Ia6e67699d98f69c8a93385b3ecbdd814c7b16921
Diffstat (limited to 'libs/hwui/LayerCache.cpp')
-rw-r--r-- | libs/hwui/LayerCache.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/libs/hwui/LayerCache.cpp b/libs/hwui/LayerCache.cpp index 31da924b5a0b..9ce0359140bb 100644 --- a/libs/hwui/LayerCache.cpp +++ b/libs/hwui/LayerCache.cpp @@ -68,7 +68,6 @@ void LayerCache::setMaxSize(uint32_t maxSize) { void LayerCache::deleteLayer(Layer* layer) { if (layer) { mSize -= layer->width * layer->height * 4; - glDeleteTextures(1, &layer->texture); delete layer; } @@ -133,12 +132,16 @@ bool LayerCache::put(Layer* layer) { if (size < mMaxSize) { // TODO: Use an LRU while (mSize + size > mMaxSize) { - Layer* biggest = mCache.top().mLayer; - deleteLayer(biggest); - mCache.removeAt(mCache.size() - 1); + size_t position = 0; +#if LAYER_REMOVE_BIGGEST + position = mCache.size() - 1; +#endif + Layer* victim = mCache.itemAt(position).mLayer; + deleteLayer(victim); + mCache.removeAt(position); - LAYER_LOGD(" Deleting layer %.2fx%.2f", biggest->layer.getWidth(), - biggest->layer.getHeight()); + LAYER_LOGD(" Deleting layer %.2fx%.2f", victim->layer.getWidth(), + victim->layer.getHeight()); } LayerEntry entry(layer); |