diff options
| author | Romain Guy <romainguy@google.com> | 2012-10-05 14:58:33 -0700 |
|---|---|---|
| committer | Romain Guy <romainguy@google.com> | 2012-10-05 14:58:33 -0700 |
| commit | 88801b270f693ffd4125534724f204135f592f72 (patch) | |
| tree | b7858888a0b642709bd38cb7f0a4379862aec978 /core/java/android/view/TextureView.java | |
| parent | 82b946496e2a503b5b21af318af5be828a223a44 (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.java | 23 |
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(); } |
