diff options
| author | 2012-05-11 10:01:42 -0700 | |
|---|---|---|
| committer | 2012-05-11 10:01:42 -0700 | |
| commit | 78245f77d2724ee3a053f13fbcb0359751b9f842 (patch) | |
| tree | d844b78ffaa2cc5b73ee498e151efc127fd31624 | |
| parent | c9c275fe5c54f12ce66440ea0d28ff35d67ebdff (diff) | |
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
| -rw-r--r-- | core/java/android/view/TextureView.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/core/java/android/view/TextureView.java b/core/java/android/view/TextureView.java index 651be2e9c1e4..2048de235cb4 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; } |