summaryrefslogtreecommitdiff
path: root/libs/hwui/LayerRenderer.cpp
diff options
context:
space:
mode:
author Dave Burke <daveburke@google.com> 2012-09-25 20:31:08 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2012-09-25 20:31:08 -0700
commitcefbd1438c9054e3a34b4ab93b4b26b427604cb1 (patch)
treee7fe0697770cd30b9df9f95720be891e4ce6e43c /libs/hwui/LayerRenderer.cpp
parente8e2b672563fed2820e392de48226acf894cf06b (diff)
parent56257aff8a55c847be72be9924c392033fd8151d (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.cpp8
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);
}
}