summaryrefslogtreecommitdiff
path: root/core/java/android/view/TextureView.java
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2012-10-05 14:58:33 -0700
committerRomain Guy <romainguy@google.com>2012-10-05 14:58:33 -0700
commit88801b270f693ffd4125534724f204135f592f72 (patch)
treeb7858888a0b642709bd38cb7f0a4379862aec978 /core/java/android/view/TextureView.java
parent82b946496e2a503b5b21af318af5be828a223a44 (diff)
Update TextureView's layer on size change
Bug #7171323 Change-Id: I24bedd7775ebf585ffcbd43b661e9c961f380c29
Diffstat (limited to 'core/java/android/view/TextureView.java')
-rw-r--r--core/java/android/view/TextureView.java23
1 files changed, 14 insertions, 9 deletions
diff --git a/core/java/android/view/TextureView.java b/core/java/android/view/TextureView.java
index 876b7d847919..a9b6e097daf4 100644
--- a/core/java/android/view/TextureView.java
+++ b/core/java/android/view/TextureView.java
@@ -189,7 +189,7 @@ public class TextureView extends View {
if (opaque != mOpaque) {
mOpaque = opaque;
if (mLayer != null) {
- updateLayer();
+ updateLayerAndInvalidate();
}
}
}
@@ -310,6 +310,7 @@ public class TextureView extends View {
super.onSizeChanged(w, h, oldw, oldh);
if (mSurface != null) {
nSetDefaultBufferSize(mSurface, getWidth(), getHeight());
+ updateLayer();
if (mListener != null) {
mListener.onSurfaceTextureSizeChanged(mSurface, getWidth(), getHeight());
}
@@ -352,9 +353,7 @@ public class TextureView extends View {
public void onFrameAvailable(SurfaceTexture surfaceTexture) {
// Per SurfaceTexture's documentation, the callback may be invoked
// from an arbitrary thread
- synchronized (mLock) {
- mUpdateLayer = true;
- }
+ updateLayer();
if (Looper.myLooper() == Looper.getMainLooper()) {
invalidate();
@@ -379,9 +378,7 @@ public class TextureView extends View {
// Since we are updating the layer, force an update to ensure its
// parameters are correct (width, height, transform, etc.)
- synchronized (mLock) {
- mUpdateLayer = true;
- }
+ updateLayer();
mMatrixChanged = true;
mAttachInfo.mHardwareRenderer.setSurfaceTexture(mLayer, mSurface);
@@ -404,7 +401,7 @@ public class TextureView extends View {
// updates listener
if (visibility == VISIBLE) {
mSurface.setOnFrameAvailableListener(mUpdateListener);
- updateLayer();
+ updateLayerAndInvalidate();
} else {
mSurface.setOnFrameAvailableListener(null);
}
@@ -412,7 +409,15 @@ public class TextureView extends View {
}
private void updateLayer() {
- mUpdateLayer = true;
+ synchronized (mLock) {
+ mUpdateLayer = true;
+ }
+ }
+
+ private void updateLayerAndInvalidate() {
+ synchronized (mLock) {
+ mUpdateLayer = true;
+ }
invalidate();
}