Merge "ViewRootImpl: Fix child lifetime." into oc-dev

am: ca2622b860

Change-Id: Ibd108646edf7217a9f7656b3c83cd87820649c2d
This commit is contained in:
Robert Carr
2017-04-07 21:52:59 +00:00
committed by android-build-merger
2 changed files with 14 additions and 4 deletions

View File

@@ -683,7 +683,8 @@ public class SurfaceView extends View {
mTranslator.translateRectInAppWindowToScreen(mScreenRect);
}
if (!isHardwareAccelerated() || !mRtHandlingPositionUpdates) {
if (mSurfaceControl != null
&& (!isHardwareAccelerated() || !mRtHandlingPositionUpdates)) {
try {
if (DEBUG) Log.d(TAG, String.format("%d updateSurfacePosition UI, " +
"postion = [%d, %d, %d, %d]", System.identityHashCode(this),

View File

@@ -1249,6 +1249,13 @@ public final class ViewRootImpl implements ViewParent,
mIsAmbientMode = ambient;
}
void setWindowVisibility(int visibility) {
if (visibility != mAttachInfo.mWindowVisibility) {
mAttachInfo.mWindowVisibility = visibility;
mView.dispatchWindowVisibilityChanged(visibility);
}
}
void setWindowStopped(boolean stopped) {
if (mStopped != stopped) {
mStopped = stopped;
@@ -1263,6 +1270,7 @@ public final class ViewRootImpl implements ViewParent,
if (renderer != null) {
renderer.destroyHardwareResources(mView);
}
mView.dispatchWindowVisibilityChanged(View.GONE);
}
}
}
@@ -1297,7 +1305,8 @@ public final class ViewRootImpl implements ViewParent,
}
int getHostVisibility() {
return (mAppVisible || mForceDecorViewVisibility) ? mView.getVisibility() : View.GONE;
return (mAppVisible || mForceDecorViewVisibility) && !mStopped
? mView.getVisibility() : View.GONE;
}
/**
@@ -1654,8 +1663,8 @@ public final class ViewRootImpl implements ViewParent,
}
if (viewVisibilityChanged) {
mAttachInfo.mWindowVisibility = viewVisibility;
host.dispatchWindowVisibilityChanged(viewVisibility);
setWindowVisibility(viewVisibility);
if (viewUserVisibilityChanged) {
host.dispatchVisibilityAggregated(viewVisibility == View.VISIBLE);
}