Loading core/java/android/view/ViewRootImpl.java +20 −5 Original line number Diff line number Diff line Loading @@ -1824,13 +1824,19 @@ public final class ViewRootImpl implements ViewParent, /** * Called after window layout to update the bounds surface. If the surface insets have changed * or the surface has resized, update the bounds surface. * * @param shouldReparent Whether it should reparent the bounds layer to the main SurfaceControl. */ private void updateBoundsLayer() { private void updateBoundsLayer(boolean shouldReparent) { if (mBoundsLayer != null) { setBoundsLayerCrop(); mTransaction.deferTransactionUntil(mBoundsLayer, getRenderSurfaceControl(), mSurface.getNextFrameNumber()) .apply(); mTransaction.deferTransactionUntil(mBoundsLayer, getRenderSurfaceControl(), mSurface.getNextFrameNumber()); if (shouldReparent) { mTransaction.reparent(mBoundsLayer, getRenderSurfaceControl()); } mTransaction.apply(); } } Loading Loading @@ -2912,7 +2918,16 @@ public final class ViewRootImpl implements ViewParent, } if (surfaceSizeChanged || surfaceReplaced || surfaceCreated || windowAttributesChanged) { updateBoundsLayer(); // If the surface has been replaced, there's a chance the bounds layer is not parented // to the new layer. When updating bounds layer, also reparent to the main VRI // SurfaceControl to ensure it's correctly placed in the hierarchy. // // This needs to be done on the client side since WMS won't reparent the children to the // new surface if it thinks the app is closing. WMS gets the signal that the app is // stopping, but on the client side it doesn't get stopped since it's restarted quick // enough. WMS doesn't want to keep around old children since they will leak when the // client creates new children. updateBoundsLayer(surfaceReplaced); } final boolean didLayout = layoutRequested && (!mStopped || mReportNextDraw); Loading Loading
core/java/android/view/ViewRootImpl.java +20 −5 Original line number Diff line number Diff line Loading @@ -1824,13 +1824,19 @@ public final class ViewRootImpl implements ViewParent, /** * Called after window layout to update the bounds surface. If the surface insets have changed * or the surface has resized, update the bounds surface. * * @param shouldReparent Whether it should reparent the bounds layer to the main SurfaceControl. */ private void updateBoundsLayer() { private void updateBoundsLayer(boolean shouldReparent) { if (mBoundsLayer != null) { setBoundsLayerCrop(); mTransaction.deferTransactionUntil(mBoundsLayer, getRenderSurfaceControl(), mSurface.getNextFrameNumber()) .apply(); mTransaction.deferTransactionUntil(mBoundsLayer, getRenderSurfaceControl(), mSurface.getNextFrameNumber()); if (shouldReparent) { mTransaction.reparent(mBoundsLayer, getRenderSurfaceControl()); } mTransaction.apply(); } } Loading Loading @@ -2912,7 +2918,16 @@ public final class ViewRootImpl implements ViewParent, } if (surfaceSizeChanged || surfaceReplaced || surfaceCreated || windowAttributesChanged) { updateBoundsLayer(); // If the surface has been replaced, there's a chance the bounds layer is not parented // to the new layer. When updating bounds layer, also reparent to the main VRI // SurfaceControl to ensure it's correctly placed in the hierarchy. // // This needs to be done on the client side since WMS won't reparent the children to the // new surface if it thinks the app is closing. WMS gets the signal that the app is // stopping, but on the client side it doesn't get stopped since it's restarted quick // enough. WMS doesn't want to keep around old children since they will leak when the // client creates new children. updateBoundsLayer(surfaceReplaced); } final boolean didLayout = layoutRequested && (!mStopped || mReportNextDraw); Loading