@@ -189,7 +189,7 @@ public void setOpaque(boolean opaque) {
189189 if (opaque != mOpaque ) {
190190 mOpaque = opaque ;
191191 if (mLayer != null ) {
192- updateLayer ();
192+ updateLayerAndInvalidate ();
193193 }
194194 }
195195 }
@@ -310,6 +310,7 @@ protected void onSizeChanged(int w, int h, int oldw, int oldh) {
310310 super .onSizeChanged (w , h , oldw , oldh );
311311 if (mSurface != null ) {
312312 nSetDefaultBufferSize (mSurface , getWidth (), getHeight ());
313+ updateLayer ();
313314 if (mListener != null ) {
314315 mListener .onSurfaceTextureSizeChanged (mSurface , getWidth (), getHeight ());
315316 }
@@ -352,9 +353,7 @@ HardwareLayer getHardwareLayer() {
352353 public void onFrameAvailable (SurfaceTexture surfaceTexture ) {
353354 // Per SurfaceTexture's documentation, the callback may be invoked
354355 // from an arbitrary thread
355- synchronized (mLock ) {
356- mUpdateLayer = true ;
357- }
356+ updateLayer ();
358357
359358 if (Looper .myLooper () == Looper .getMainLooper ()) {
360359 invalidate ();
@@ -379,9 +378,7 @@ public void onFrameAvailable(SurfaceTexture surfaceTexture) {
379378
380379 // Since we are updating the layer, force an update to ensure its
381380 // parameters are correct (width, height, transform, etc.)
382- synchronized (mLock ) {
383- mUpdateLayer = true ;
384- }
381+ updateLayer ();
385382 mMatrixChanged = true ;
386383
387384 mAttachInfo .mHardwareRenderer .setSurfaceTexture (mLayer , mSurface );
@@ -404,15 +401,23 @@ protected void onVisibilityChanged(View changedView, int visibility) {
404401 // updates listener
405402 if (visibility == VISIBLE ) {
406403 mSurface .setOnFrameAvailableListener (mUpdateListener );
407- updateLayer ();
404+ updateLayerAndInvalidate ();
408405 } else {
409406 mSurface .setOnFrameAvailableListener (null );
410407 }
411408 }
412409 }
413410
414411 private void updateLayer () {
415- mUpdateLayer = true ;
412+ synchronized (mLock ) {
413+ mUpdateLayer = true ;
414+ }
415+ }
416+
417+ private void updateLayerAndInvalidate () {
418+ synchronized (mLock ) {
419+ mUpdateLayer = true ;
420+ }
416421 invalidate ();
417422 }
418423
0 commit comments