diff options
Diffstat (limited to 'libs/hwui/LayerCache.cpp')
-rw-r--r-- | libs/hwui/LayerCache.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/libs/hwui/LayerCache.cpp b/libs/hwui/LayerCache.cpp index d304b374850e..eea707edb457 100644 --- a/libs/hwui/LayerCache.cpp +++ b/libs/hwui/LayerCache.cpp @@ -69,10 +69,14 @@ void LayerCache::setMaxSize(uint32_t maxSize) { void LayerCache::deleteLayer(Layer* layer) { if (layer) { - LAYER_LOGD("Destroying layer %dx%d", layer->getWidth(), layer->getHeight()); + GLuint fbo = layer->getFbo(); + LAYER_LOGD("Destroying layer %dx%d, fbo %d", layer->getWidth(), layer->getHeight(), fbo); + mSize -= layer->getWidth() * layer->getHeight() * 4; - layer->deleteFbo(); + + if (fbo) Caches::getInstance().fboCache.put(fbo); layer->deleteTexture(); + delete layer; } } @@ -174,6 +178,10 @@ bool LayerCache::put(Layer* layer) { victim->layer.getHeight()); } + layer->deferredUpdateScheduled = false; + layer->renderer = NULL; + layer->displayList = NULL; + LayerEntry entry(layer); mCache.add(entry); |