summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2014-02-19 18:28:42 -0800
committerJohn Reck <jreck@google.com>2014-02-19 18:31:08 -0800
commit0b2c8df7a6883a6af84c52efbd93619cc63cde53 (patch)
treed08d114d3e2f04798a157b613ce6ff6f995f090f /core/java
parent587f43d8725b11632b5d64a0a56a647207f01668 (diff)
Fix layer recycling for GLRenderer
Bug: 13007905 Change-Id: I1589f2bb14429099e391c03d7dfb1650da145f28
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/view/GLRenderer.java6
1 files changed, 6 insertions, 0 deletions
diff --git a/core/java/android/view/GLRenderer.java b/core/java/android/view/GLRenderer.java
index c1eb6b771c09..e9f1f67c3567 100644
--- a/core/java/android/view/GLRenderer.java
+++ b/core/java/android/view/GLRenderer.java
@@ -500,6 +500,10 @@ public class GLRenderer extends HardwareRenderer {
if (mGlCanvas != null) {
mGlCanvas.cancelLayerUpdate(layer);
}
+ if (Looper.myLooper() == Looper.getMainLooper() && validate()) {
+ long backingLayer = layer.detachBackingLayer();
+ nDestroyLayer(backingLayer);
+ }
mAttachedLayers.remove(layer);
}
@@ -1472,6 +1476,8 @@ public class GLRenderer extends HardwareRenderer {
*/
static native boolean isBackBufferPreserved();
+ static native void nDestroyLayer(long layerPtr);
+
class DrawPerformanceDataProvider extends GraphDataProvider {
private final int mGraphType;