Merge "Revert "Reparent bounds layer if surface was replaced."" into rvc-d1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
15e6f37a16
@@ -1824,19 +1824,13 @@ public final class ViewRootImpl implements ViewParent,
|
|||||||
/**
|
/**
|
||||||
* Called after window layout to update the bounds surface. If the surface insets have changed
|
* Called after window layout to update the bounds surface. If the surface insets have changed
|
||||||
* or the surface has resized, update the bounds surface.
|
* 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(boolean shouldReparent) {
|
private void updateBoundsLayer() {
|
||||||
if (mBoundsLayer != null) {
|
if (mBoundsLayer != null) {
|
||||||
setBoundsLayerCrop();
|
setBoundsLayerCrop();
|
||||||
mTransaction.deferTransactionUntil(mBoundsLayer, getRenderSurfaceControl(),
|
mTransaction.deferTransactionUntil(mBoundsLayer,
|
||||||
mSurface.getNextFrameNumber());
|
getRenderSurfaceControl(), mSurface.getNextFrameNumber())
|
||||||
|
.apply();
|
||||||
if (shouldReparent) {
|
|
||||||
mTransaction.reparent(mBoundsLayer, getRenderSurfaceControl());
|
|
||||||
}
|
|
||||||
mTransaction.apply();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2919,16 +2913,7 @@ public final class ViewRootImpl implements ViewParent,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (surfaceSizeChanged || surfaceReplaced || surfaceCreated || windowAttributesChanged) {
|
if (surfaceSizeChanged || surfaceReplaced || surfaceCreated || windowAttributesChanged) {
|
||||||
// If the surface has been replaced, there's a chance the bounds layer is not parented
|
updateBoundsLayer();
|
||||||
// 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);
|
final boolean didLayout = layoutRequested && (!mStopped || mReportNextDraw);
|
||||||
|
|||||||
Reference in New Issue
Block a user