From 78245f77d2724ee3a053f13fbcb0359751b9f842 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Fri, 11 May 2012 10:01:42 -0700 Subject: [PATCH] Prevent NPE in TextureView.getBitmap() This crash could occur when invoking setSurfaceTexture() then getBitmap() before the View has a chance to be drawn. Change-Id: I25c55df15750e59b9c916e8f750de2c89718d39e --- core/java/android/view/TextureView.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/TextureView.java b/core/java/android/view/TextureView.java index 651be2e9c1e41..2048de235cb48 100644 --- a/core/java/android/view/TextureView.java +++ b/core/java/android/view/TextureView.java @@ -561,7 +561,17 @@ public class TextureView extends View { applyUpdate(); applyTransformMatrix(); - mLayer.copyInto(bitmap); + // This case can happen if the app invokes setSurfaceTexture() before + // we are able to create the hardware layer. We can safely initialize + // the layer here thanks to the validate() call at the beginning of + // this method + if (mLayer == null && mUpdateSurface) { + getHardwareLayer(); + } + + if (mLayer != null) { + mLayer.copyInto(bitmap); + } } return bitmap; }