diff options
author | 2012-09-25 20:31:08 -0700 | |
---|---|---|
committer | 2012-09-25 20:31:08 -0700 | |
commit | cefbd1438c9054e3a34b4ab93b4b26b427604cb1 (patch) | |
tree | e7fe0697770cd30b9df9f95720be891e4ce6e43c /libs/hwui/LayerRenderer.cpp | |
parent | e8e2b672563fed2820e392de48226acf894cf06b (diff) | |
parent | 56257aff8a55c847be72be9924c392033fd8151d (diff) |
Merge "Revert "Deleting objects on the wrong thread is a silly idea Bug #7195815"" into jb-mr1-dev
Diffstat (limited to 'libs/hwui/LayerRenderer.cpp')
-rw-r--r-- | libs/hwui/LayerRenderer.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libs/hwui/LayerRenderer.cpp b/libs/hwui/LayerRenderer.cpp index c581041a3d75..799aea3755a5 100644 --- a/libs/hwui/LayerRenderer.cpp +++ b/libs/hwui/LayerRenderer.cpp @@ -299,6 +299,13 @@ void LayerRenderer::destroyLayer(Layer* layer) { LAYER_RENDERER_LOGD("Recycling layer, %dx%d fbo = %d", layer->getWidth(), layer->getHeight(), layer->getFbo()); + GLuint fbo = layer->getFbo(); + if (fbo) { + flushLayer(layer); + Caches::getInstance().fboCache.put(fbo); + layer->setFbo(0); + } + if (!Caches::getInstance().layerCache.put(layer)) { LAYER_RENDERER_LOGD(" Destroyed!"); Caches::getInstance().resourceCache.decrementRefcount(layer); @@ -315,6 +322,7 @@ void LayerRenderer::destroyLayer(Layer* layer) { void LayerRenderer::destroyLayerDeferred(Layer* layer) { if (layer) { LAYER_RENDERER_LOGD("Deferring layer destruction, fbo = %d", layer->getFbo()); + Caches::getInstance().deleteLayerDeferred(layer); } } |