diff options
| author | 2011-10-10 14:07:10 -0700 | |
|---|---|---|
| committer | 2011-10-10 14:07:10 -0700 | |
| commit | 1e43657ca08d755e950220a0e70518f33dce705e (patch) | |
| tree | 6431d4ef1c1c7b00864ba9bcbe871a2cb6ad974b | |
| parent | 184b44e79406e5f7e4f68673277c9637c6451b55 (diff) | |
| parent | 589b0bb6ab81657ba201cbc441a49f85305170bc (diff) | |
Merge "Make sure we have the correct GL context when grabbing a bitmap Bug #5427391"
| -rw-r--r-- | core/java/android/view/TextureView.java | 14 | ||||
| -rw-r--r-- | core/java/android/view/View.java | 8 |
2 files changed, 22 insertions, 0 deletions
diff --git a/core/java/android/view/TextureView.java b/core/java/android/view/TextureView.java index d57132aef84d..169738257b3b 100644 --- a/core/java/android/view/TextureView.java +++ b/core/java/android/view/TextureView.java @@ -502,9 +502,23 @@ public class TextureView extends View { * @see #isAvailable() * @see #getBitmap(int, int) * @see #getBitmap() + * + * @throws IllegalStateException if the hardware rendering context cannot be + * acquired to capture the bitmap */ public Bitmap getBitmap(Bitmap bitmap) { if (bitmap != null && isAvailable()) { + AttachInfo info = mAttachInfo; + if (info != null && info.mHardwareRenderer != null && + info.mHardwareRenderer.isEnabled()) { + if (!info.mHardwareRenderer.validate()) { + throw new IllegalStateException("Could not acquire hardware rendering context"); + } + } + + applyUpdate(); + applyTransformMatrix(); + mLayer.copyInto(bitmap); } return bitmap; diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 15544ccc4887..b972ebc7907e 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -10125,6 +10125,14 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal return mHardwareLayer; } + /** + * Destroys this View's hardware layer if possible. + * + * @return True if the layer was destroyed, false otherwise. + * + * @see #setLayerType(int, android.graphics.Paint) + * @see #LAYER_TYPE_HARDWARE + */ boolean destroyLayer() { if (mHardwareLayer != null) { mHardwareLayer.destroy(); |