summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2013-06-27 10:58:10 -0700
committerThe Android Automerger <android-build@android.com>2013-06-28 14:36:58 -0700
commitf63fdf8680b4f17b815a4173924c063983abfdf2 (patch)
treed5f8bb9cf68fbdfd78d36fe96e6d292e5ab29ed7
parent46bb6d6cb7ee4002fe6c306a1f027d536272f617 (diff)
downloadbase-f63fdf8680b4f17b815a4173924c063983abfdf2.tar.gz
Recreate TextureView's display list on attach
Bug #9425270 When a TextureView is detached from its window and immediately re-attached, the display list is not destroyed but reused as is. TextureView will however destroy the layer and surface texture reference by the display list. The solution is to force TextureView to invalidate its display list on re-attach if it previously had a surface/layer pair. Change-Id: I475096ffa7e5709155c4c943bf1bfaaaedbd4a1d
-rw-r--r--core/java/android/view/TextureView.java8
1 files changed, 8 insertions, 0 deletions
diff --git a/core/java/android/view/TextureView.java b/core/java/android/view/TextureView.java
index 5c3934d82077..244dc337d6f9 100644
--- a/core/java/android/view/TextureView.java
+++ b/core/java/android/view/TextureView.java
@@ -108,6 +108,7 @@ public class TextureView extends View {
private HardwareLayer mLayer;
private SurfaceTexture mSurface;
private SurfaceTextureListener mListener;
+ private boolean mHadSurface;
private boolean mOpaque = true;
@@ -202,6 +203,11 @@ public class TextureView extends View {
Log.w(LOG_TAG, "A TextureView or a subclass can only be "
+ "used with hardware acceleration enabled.");
}
+
+ if (mHadSurface) {
+ invalidate(true);
+ mHadSurface = false;
+ }
}
@Override
@@ -241,6 +247,8 @@ public class TextureView extends View {
if (shouldRelease) mSurface.release();
mSurface = null;
mLayer = null;
+
+ mHadSurface = true;
}
}