summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2020-03-24 14:25:47 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-03-24 14:25:47 +0000
commit367257cfc46a0661fcbfa5ed10aca4eb86b487c9 (patch)
treeaf13f3c9130f36eae82317bed30c503e4dec0a17 /core/java
parenta653dc5dfed0567215ff37ed45e8aab64f07d3e1 (diff)
parent22488d31bbff0f5ad29d820f001ae827332354be (diff)
Merge "Performance optimizations for new insets" into rvc-dev
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/view/IWindowSession.aidl3
-rw-r--r--core/java/android/view/InsetsAnimationControlImpl.java1
-rw-r--r--core/java/android/view/InsetsController.java32
-rw-r--r--core/java/android/view/InsetsState.java13
-rw-r--r--core/java/android/view/View.java10
-rw-r--r--core/java/android/view/ViewRootImpl.java152
-rw-r--r--core/java/android/view/WindowManagerImpl.java2
7 files changed, 53 insertions, 160 deletions
diff --git a/core/java/android/view/IWindowSession.aidl b/core/java/android/view/IWindowSession.aidl
index dfe89a37a229..45e51f756489 100644
--- a/core/java/android/view/IWindowSession.aidl
+++ b/core/java/android/view/IWindowSession.aidl
@@ -318,8 +318,7 @@ interface IWindowSession {
* Called when the client has changed the local insets state, and now the server should reflect
* that new state.
*/
- void insetsModified(IWindow window, in InsetsState state);
-
+ oneway void insetsModified(IWindow window, in InsetsState state);
/**
* Called when the system gesture exclusion has changed.
diff --git a/core/java/android/view/InsetsAnimationControlImpl.java b/core/java/android/view/InsetsAnimationControlImpl.java
index b70072877c66..07b6cc1c22d2 100644
--- a/core/java/android/view/InsetsAnimationControlImpl.java
+++ b/core/java/android/view/InsetsAnimationControlImpl.java
@@ -258,7 +258,6 @@ public class InsetsAnimationControlImpl implements WindowInsetsAnimationControll
return state.calculateInsets(frame, null /* ignoringVisibilityState */,
false /* isScreenRound */,
false /* alwaysConsumeSystemBars */, null /* displayCutout */,
- null /* legacyContentInsets */, null /* legacyStableInsets */,
LayoutParams.SOFT_INPUT_ADJUST_RESIZE /* legacySoftInputMode*/,
0 /* legacySystemUiFlags */, typeSideMap)
.getInsets(mTypes);
diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java
index 048c0e26cdb8..43f80f1490ad 100644
--- a/core/java/android/view/InsetsController.java
+++ b/core/java/android/view/InsetsController.java
@@ -363,9 +363,6 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
private final Runnable mAnimCallback;
- private final Rect mLastLegacyContentInsets = new Rect();
- private final Rect mLastLegacyStableInsets = new Rect();
-
/** Pending control request that is waiting on IME to be ready to be shown */
private PendingControlRequest mPendingImeControlRequest;
@@ -435,8 +432,8 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
WindowInsets insets = state.calculateInsets(mFrame, mState /* ignoringVisibilityState*/,
mLastInsets.isRound(), mLastInsets.shouldAlwaysConsumeSystemBars(),
- mLastDisplayCutout, mLastLegacyContentInsets, mLastLegacyStableInsets,
- mLastLegacySoftInputMode, mLastLegacySystemUiFlags, null /* typeSideMap */);
+ mLastDisplayCutout, mLastLegacySoftInputMode, mLastLegacySystemUiFlags,
+ null /* typeSideMap */);
mViewRoot.mView.dispatchWindowInsetsAnimationProgress(insets,
mUnmodifiableTmpRunningAnims);
@@ -466,13 +463,16 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
@VisibleForTesting
public boolean onStateChanged(InsetsState state) {
- if (mState.equals(state) && mLastDispachedState.equals(state)) {
+ boolean localStateChanged = !mState.equals(state);
+ if (!localStateChanged && mLastDispachedState.equals(state)) {
return false;
}
mState.set(state);
mLastDispachedState.set(state, true /* copySources */);
applyLocalVisibilityOverride();
- mViewRoot.notifyInsetsChanged();
+ if (localStateChanged) {
+ mViewRoot.notifyInsetsChanged();
+ }
if (!mState.equals(mLastDispachedState)) {
sendStateToWindowManager();
}
@@ -484,26 +484,23 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
*/
@VisibleForTesting
public WindowInsets calculateInsets(boolean isScreenRound,
- boolean alwaysConsumeSystemBars, DisplayCutout cutout, Rect legacyContentInsets,
- Rect legacyStableInsets, int legacySoftInputMode, int legacySystemUiFlags) {
- mLastLegacyContentInsets.set(legacyContentInsets);
- mLastLegacyStableInsets.set(legacyStableInsets);
+ boolean alwaysConsumeSystemBars, DisplayCutout cutout,
+ int legacySoftInputMode, int legacySystemUiFlags) {
mLastLegacySoftInputMode = legacySoftInputMode;
mLastLegacySystemUiFlags = legacySystemUiFlags;
mLastDisplayCutout = cutout;
mLastInsets = mState.calculateInsets(mFrame, null /* ignoringVisibilityState*/,
- isScreenRound, alwaysConsumeSystemBars, cutout, legacyContentInsets,
- legacyStableInsets, legacySoftInputMode, legacySystemUiFlags,
+ isScreenRound, alwaysConsumeSystemBars, cutout,
+ legacySoftInputMode, legacySystemUiFlags,
null /* typeSideMap */);
return mLastInsets;
}
/**
- * @see InsetsState#calculateVisibleInsets(Rect, Rect, int)
+ * @see InsetsState#calculateVisibleInsets(Rect, int)
*/
- public Rect calculateVisibleInsets(Rect legacyVisibleInsets,
- @SoftInputModeFlags int softInputMode) {
- return mState.calculateVisibleInsets(mFrame, legacyVisibleInsets, softInputMode);
+ public Rect calculateVisibleInsets(@SoftInputModeFlags int softInputMode) {
+ return mState.calculateVisibleInsets(mFrame, softInputMode);
}
/**
@@ -954,7 +951,6 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
}
}
- // TODO: Put this on a dispatcher thread.
try {
mViewRoot.mWindowSession.insetsModified(mViewRoot.mWindow, tmpState);
} catch (RemoteException e) {
diff --git a/core/java/android/view/InsetsState.java b/core/java/android/view/InsetsState.java
index c2ad74a566e9..40e6f57f2286 100644
--- a/core/java/android/view/InsetsState.java
+++ b/core/java/android/view/InsetsState.java
@@ -160,7 +160,6 @@ public class InsetsState implements Parcelable {
*/
public WindowInsets calculateInsets(Rect frame, @Nullable InsetsState ignoringVisibilityState,
boolean isScreenRound, boolean alwaysConsumeSystemBars, DisplayCutout cutout,
- @Nullable Rect legacyContentInsets, @Nullable Rect legacyStableInsets,
int legacySoftInputMode, int legacySystemUiFlags,
@Nullable @InternalInsetsSide SparseIntArray typeSideMap) {
Insets[] typeInsetsMap = new Insets[Type.SIZE];
@@ -168,11 +167,6 @@ public class InsetsState implements Parcelable {
boolean[] typeVisibilityMap = new boolean[SIZE];
final Rect relativeFrame = new Rect(frame);
final Rect relativeFrameMax = new Rect(frame);
- if (ViewRootImpl.sNewInsetsMode != NEW_INSETS_MODE_FULL
- && legacyContentInsets != null && legacyStableInsets != null) {
- WindowInsets.assignCompatInsets(typeInsetsMap, legacyContentInsets);
- WindowInsets.assignCompatInsets(typeMaxInsetsMap, legacyStableInsets);
- }
for (int type = FIRST_TYPE; type <= LAST_TYPE; type++) {
InsetsSource source = mSources.get(type);
if (source == null) {
@@ -217,12 +211,7 @@ public class InsetsState implements Parcelable {
&& (legacySystemUiFlags & SYSTEM_UI_FLAG_LAYOUT_STABLE) != 0);
}
- public Rect calculateVisibleInsets(Rect frame, Rect legacyVisibleInsets,
- @SoftInputModeFlags int softInputMode) {
- if (sNewInsetsMode == NEW_INSETS_MODE_NONE) {
- return legacyVisibleInsets;
- }
-
+ public Rect calculateVisibleInsets(Rect frame, @SoftInputModeFlags int softInputMode) {
Insets insets = Insets.NONE;
for (int type = FIRST_TYPE; type <= LAST_TYPE; type++) {
InsetsSource source = mSources.get(type);
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index fcab9d11f3d6..d69357bc503d 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -80,6 +80,7 @@ import android.graphics.drawable.GradientDrawable;
import android.hardware.display.DisplayManagerGlobal;
import android.net.Uri;
import android.os.Build;
+import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
@@ -28745,7 +28746,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* of the screen decorations, these are the current insets for the
* content of the window.
*/
- @UnsupportedAppUsage
+ @UnsupportedAppUsage(maxTargetSdk = VERSION_CODES.Q,
+ publicAlternatives = "Use {@link WindowInsets#getInsets(int)}")
final Rect mContentInsets = new Rect();
/**
@@ -28753,7 +28755,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* of the screen decorations, these are the current insets for the
* actual visible parts of the window.
*/
- @UnsupportedAppUsage
+ @UnsupportedAppUsage(maxTargetSdk = VERSION_CODES.Q,
+ publicAlternatives = "Use {@link WindowInsets#getInsets(int)}")
final Rect mVisibleInsets = new Rect();
/**
@@ -28761,7 +28764,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* of the screen decorations, these are the current insets for the
* stable system windows.
*/
- @UnsupportedAppUsage
+ @UnsupportedAppUsage(maxTargetSdk = VERSION_CODES.Q,
+ publicAlternatives = "Use {@link WindowInsets#getInsets(int)}")
final Rect mStableInsets = new Rect();
final DisplayCutout.ParcelableWrapper mDisplayCutout =
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 315c8777ca8f..50202aed36d2 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -547,13 +547,11 @@ public final class ViewRootImpl implements ViewParent,
boolean mAddedTouchMode;
final Rect mTmpFrame = new Rect();
+ final Rect mTmpRect = new Rect();
// These are accessed by multiple threads.
final Rect mWinFrame; // frame given by window manager.
- final Rect mPendingVisibleInsets = new Rect();
- final Rect mPendingStableInsets = new Rect();
- final Rect mPendingContentInsets = new Rect();
final Rect mPendingBackDropFrame = new Rect();
final DisplayCutout.ParcelableWrapper mPendingDisplayCutout =
new DisplayCutout.ParcelableWrapper(DisplayCutout.NO_CUTOUT);
@@ -562,10 +560,6 @@ public final class ViewRootImpl implements ViewParent,
final ViewTreeObserver.InternalInsetsInfo mLastGivenInsets
= new ViewTreeObserver.InternalInsetsInfo();
- final Rect mDispatchContentInsets = new Rect();
- final Rect mDispatchStableInsets = new Rect();
- DisplayCutout mDispatchDisplayCutout = DisplayCutout.NO_CUTOUT;
-
private WindowInsets mLastWindowInsets;
// Insets types hidden by legacy window flags or system UI flags.
@@ -1019,10 +1013,7 @@ public final class ViewRootImpl implements ViewParent,
if (mTranslator != null) {
mTranslator.translateRectInScreenToAppWindow(mAttachInfo.mContentInsets);
}
- mPendingContentInsets.set(mAttachInfo.mContentInsets);
- mPendingStableInsets.set(mAttachInfo.mStableInsets);
mPendingDisplayCutout.set(mAttachInfo.mDisplayCutout);
- mPendingVisibleInsets.set(0, 0, 0, 0);
mAttachInfo.mAlwaysConsumeSystemBars =
(res & WindowManagerGlobal.ADD_FLAG_ALWAYS_CONSUME_SYSTEM_BARS) != 0;
mPendingAlwaysConsumeSystemBars = mAttachInfo.mAlwaysConsumeSystemBars;
@@ -2200,45 +2191,20 @@ public final class ViewRootImpl implements ViewParent,
/* package */ WindowInsets getWindowInsets(boolean forceConstruct) {
if (mLastWindowInsets == null || forceConstruct) {
- mDispatchContentInsets.set(mAttachInfo.mContentInsets);
- mDispatchStableInsets.set(mAttachInfo.mStableInsets);
- mDispatchDisplayCutout = mAttachInfo.mDisplayCutout.get();
-
- Rect contentInsets = mDispatchContentInsets;
- Rect stableInsets = mDispatchStableInsets;
- DisplayCutout displayCutout = mDispatchDisplayCutout;
- // For dispatch we preserve old logic, but for direct requests from Views we allow to
- // immediately use pending insets. This is such that getRootWindowInsets returns the
- // result from the layout hint before we ran a traversal shortly after adding a window.
- if (!forceConstruct
- && (!mPendingContentInsets.equals(contentInsets) ||
- !mPendingStableInsets.equals(stableInsets) ||
- !mPendingDisplayCutout.get().equals(displayCutout))) {
- contentInsets = mPendingContentInsets;
- stableInsets = mPendingStableInsets;
- displayCutout = mPendingDisplayCutout.get();
- }
- contentInsets = ensureInsetsNonNegative(contentInsets, "content");
- stableInsets = ensureInsetsNonNegative(stableInsets, "stable");
mLastWindowInsets = mInsetsController.calculateInsets(
mContext.getResources().getConfiguration().isScreenRound(),
- mAttachInfo.mAlwaysConsumeSystemBars, displayCutout,
- contentInsets, stableInsets, mWindowAttributes.softInputMode,
- (mWindowAttributes.systemUiVisibility
+ mAttachInfo.mAlwaysConsumeSystemBars, mPendingDisplayCutout.get(),
+ mWindowAttributes.softInputMode, (mWindowAttributes.systemUiVisibility
| mWindowAttributes.subtreeSystemUiVisibility));
- }
- return mLastWindowInsets;
- }
- private Rect ensureInsetsNonNegative(Rect insets, String kind) {
- if (insets.left < 0 || insets.top < 0 || insets.right < 0 || insets.bottom < 0) {
- Log.wtf(mTag, "Negative " + kind + "Insets: " + insets + ", mFirst=" + mFirst);
- return new Rect(Math.max(0, insets.left),
- Math.max(0, insets.top),
- Math.max(0, insets.right),
- Math.max(0, insets.bottom));
+ Rect visibleInsets = mInsetsController.calculateVisibleInsets(
+ mWindowAttributes.softInputMode);
+
+ mAttachInfo.mVisibleInsets.set(visibleInsets);
+ mAttachInfo.mContentInsets.set(mLastWindowInsets.getSystemWindowInsets().toRect());
+ mAttachInfo.mStableInsets.set(mLastWindowInsets.getStableInsets().toRect());
}
- return insets;
+ return mLastWindowInsets;
}
public void dispatchApplyInsets(View host) {
@@ -2262,12 +2228,6 @@ public final class ViewRootImpl implements ViewParent,
== LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
}
- private void updateVisibleInsets() {
- Rect visibleInsets = mInsetsController.calculateVisibleInsets(mPendingVisibleInsets,
- mWindowAttributes.softInputMode);
- mAttachInfo.mVisibleInsets.set(visibleInsets);
- }
-
@VisibleForTesting
public InsetsController getInsetsController() {
return mInsetsController;
@@ -2403,7 +2363,7 @@ public final class ViewRootImpl implements ViewParent,
// Execute enqueued actions on every traversal in case a detached view enqueued an action
getRunQueue().executeActions(mAttachInfo.mHandler);
- boolean insetsChanged = false;
+ boolean cutoutChanged = false;
boolean layoutRequested = mLayoutRequested && (!mStopped || mReportNextDraw);
if (layoutRequested) {
@@ -2416,22 +2376,8 @@ public final class ViewRootImpl implements ViewParent,
mAttachInfo.mInTouchMode = !mAddedTouchMode;
ensureTouchModeLocally(mAddedTouchMode);
} else {
- if (!mPendingContentInsets.equals(mAttachInfo.mContentInsets)) {
- insetsChanged = true;
- }
- if (!mPendingStableInsets.equals(mAttachInfo.mStableInsets)) {
- insetsChanged = true;
- }
if (!mPendingDisplayCutout.equals(mAttachInfo.mDisplayCutout)) {
- insetsChanged = true;
- }
- if (!mPendingVisibleInsets.equals(mAttachInfo.mVisibleInsets)) {
- updateVisibleInsets();
- if (DEBUG_LAYOUT) Log.v(mTag, "Visible insets changing to: "
- + mAttachInfo.mVisibleInsets);
- }
- if (mPendingAlwaysConsumeSystemBars != mAttachInfo.mAlwaysConsumeSystemBars) {
- insetsChanged = true;
+ cutoutChanged = true;
}
if (lp.width == ViewGroup.LayoutParams.WRAP_CONTENT
|| lp.height == ViewGroup.LayoutParams.WRAP_CONTENT) {
@@ -2494,7 +2440,6 @@ public final class ViewRootImpl implements ViewParent,
}
if (mApplyInsetsRequested) {
- updateVisibleInsets();
dispatchApplyInsets(host);
if (mLayoutRequested) {
// Short-circuit catching a new layout request here, so
@@ -2562,8 +2507,8 @@ public final class ViewRootImpl implements ViewParent,
controlInsetsForCompatibility(params);
}
- if (mFirst || windowShouldResize || insetsChanged ||
- viewVisibilityChanged || params != null || mForceNextWindowRelayout) {
+ if (mFirst || windowShouldResize || viewVisibilityChanged || cutoutChanged || params != null
+ || mForceNextWindowRelayout) {
mForceNextWindowRelayout = false;
if (isViewVisible) {
@@ -2585,7 +2530,7 @@ public final class ViewRootImpl implements ViewParent,
}
boolean hwInitialized = false;
- boolean contentInsetsChanged = false;
+ boolean dispatchApplyInsets = false;
boolean hadSurface = mSurface.isValid();
try {
@@ -2608,9 +2553,6 @@ public final class ViewRootImpl implements ViewParent,
relayoutResult = relayoutWindow(params, viewVisibility, insetsPending);
if (DEBUG_LAYOUT) Log.v(mTag, "relayout: frame=" + frame.toShortString()
- + " content=" + mPendingContentInsets.toShortString()
- + " visible=" + mPendingVisibleInsets.toShortString()
- + " stable=" + mPendingStableInsets.toShortString()
+ " cutout=" + mPendingDisplayCutout.get().toString()
+ " surface=" + mSurface);
@@ -2627,14 +2569,7 @@ public final class ViewRootImpl implements ViewParent,
updatedConfiguration = true;
}
- contentInsetsChanged = !mPendingContentInsets.equals(
- mAttachInfo.mContentInsets);
- final boolean visibleInsetsChanged = !mPendingVisibleInsets.equals(
- mAttachInfo.mVisibleInsets);
- final boolean stableInsetsChanged = !mPendingStableInsets.equals(
- mAttachInfo.mStableInsets);
- final boolean cutoutChanged = !mPendingDisplayCutout.equals(
- mAttachInfo.mDisplayCutout);
+ cutoutChanged = !mPendingDisplayCutout.equals(mAttachInfo.mDisplayCutout);
surfaceSizeChanged = (relayoutResult
& WindowManagerGlobal.RELAYOUT_RES_SURFACE_RESIZED) != 0;
final boolean alwaysConsumeSystemBarsChanged =
@@ -2645,42 +2580,25 @@ public final class ViewRootImpl implements ViewParent,
surfaceReplaced = (surfaceGenerationId != mSurface.getGenerationId())
&& mSurface.isValid();
- if (contentInsetsChanged) {
- mAttachInfo.mContentInsets.set(mPendingContentInsets);
- if (DEBUG_LAYOUT) Log.v(mTag, "Content insets changing to: "
- + mAttachInfo.mContentInsets);
- }
- if (stableInsetsChanged) {
- mAttachInfo.mStableInsets.set(mPendingStableInsets);
- if (DEBUG_LAYOUT) Log.v(mTag, "Decor insets changing to: "
- + mAttachInfo.mStableInsets);
- // Need to relayout with content insets.
- contentInsetsChanged = true;
- }
if (cutoutChanged) {
mAttachInfo.mDisplayCutout.set(mPendingDisplayCutout);
if (DEBUG_LAYOUT) {
Log.v(mTag, "DisplayCutout changing to: " + mAttachInfo.mDisplayCutout);
}
// Need to relayout with content insets.
- contentInsetsChanged = true;
+ dispatchApplyInsets = true;
}
if (alwaysConsumeSystemBarsChanged) {
mAttachInfo.mAlwaysConsumeSystemBars = mPendingAlwaysConsumeSystemBars;
- contentInsetsChanged = true;
+ dispatchApplyInsets = true;
}
- if (contentInsetsChanged || mLastSystemUiVisibility !=
+ if (dispatchApplyInsets || mLastSystemUiVisibility !=
mAttachInfo.mSystemUiVisibility || mApplyInsetsRequested) {
mLastSystemUiVisibility = mAttachInfo.mSystemUiVisibility;
dispatchApplyInsets(host);
// We applied insets so force contentInsetsChanged to ensure the
// hierarchy is measured below.
- contentInsetsChanged = true;
- }
- if (visibleInsetsChanged) {
- updateVisibleInsets();
- if (DEBUG_LAYOUT) Log.v(mTag, "Visible insets changing to: "
- + mAttachInfo.mVisibleInsets);
+ dispatchApplyInsets = true;
}
if (colorModeChanged && mAttachInfo.mThreadedRenderer != null) {
mAttachInfo.mThreadedRenderer.setWideGamut(
@@ -2771,7 +2689,8 @@ public final class ViewRootImpl implements ViewParent,
&& mWinFrame.height() == mPendingBackDropFrame.height();
// TODO: Need cutout?
startDragResizing(mPendingBackDropFrame, !backdropSizeMatchesFrame,
- mPendingVisibleInsets, mPendingStableInsets, mResizeMode);
+ mLastWindowInsets.getSystemWindowInsets().toRect(),
+ mLastWindowInsets.getStableInsets().toRect(), mResizeMode);
} else {
// We shouldn't come here, but if we come we should end the resize.
endDragResizing();
@@ -2862,7 +2781,7 @@ public final class ViewRootImpl implements ViewParent,
boolean focusChangedDueToTouchMode = ensureTouchModeLocally(
(relayoutResult&WindowManagerGlobal.RELAYOUT_RES_IN_TOUCH_MODE) != 0);
if (focusChangedDueToTouchMode || mWidth != host.getMeasuredWidth()
- || mHeight != host.getMeasuredHeight() || contentInsetsChanged ||
+ || mHeight != host.getMeasuredHeight() || dispatchApplyInsets ||
updatedConfiguration) {
int childWidthMeasureSpec = getRootMeasureSpec(mWidth, lp.width);
int childHeightMeasureSpec = getRootMeasureSpec(mHeight, lp.height);
@@ -2871,7 +2790,7 @@ public final class ViewRootImpl implements ViewParent,
+ mWidth + " measuredWidth=" + host.getMeasuredWidth()
+ " mHeight=" + mHeight
+ " measuredHeight=" + host.getMeasuredHeight()
- + " coveredInsetsChanged=" + contentInsetsChanged);
+ + " dispatchApplyInsets=" + dispatchApplyInsets);
// Ask host how big it wants to be
performMeasure(childWidthMeasureSpec, childHeightMeasureSpec);
@@ -4917,12 +4836,9 @@ public final class ViewRootImpl implements ViewParent,
// Recycled in the fall through...
SomeArgs args = (SomeArgs) msg.obj;
if (mWinFrame.equals(args.arg1)
- && mPendingContentInsets.equals(args.arg2)
- && mPendingStableInsets.equals(args.arg6)
&& mPendingDisplayCutout.get().equals(args.arg9)
- && mPendingVisibleInsets.equals(args.arg3)
&& mPendingBackDropFrame.equals(args.arg8)
- && args.arg4 == null
+ && mLastReportedMergedConfiguration.equals(args.arg4)
&& args.argi1 == 0
&& mDisplay.getDisplayId() == args.argi3) {
break;
@@ -4950,16 +4866,10 @@ public final class ViewRootImpl implements ViewParent,
}
final boolean framesChanged = !mWinFrame.equals(args.arg1)
- || !mPendingContentInsets.equals(args.arg2)
- || !mPendingStableInsets.equals(args.arg6)
- || !mPendingDisplayCutout.get().equals(args.arg9)
- || !mPendingVisibleInsets.equals(args.arg3);
+ || !mPendingDisplayCutout.get().equals(args.arg9);
setFrame((Rect) args.arg1);
- mPendingContentInsets.set((Rect) args.arg2);
- mPendingStableInsets.set((Rect) args.arg6);
mPendingDisplayCutout.set((DisplayCutout) args.arg9);
- mPendingVisibleInsets.set((Rect) args.arg3);
mPendingBackDropFrame.set((Rect) args.arg8);
mForceNextWindowRelayout = args.argi1 != 0;
mPendingAlwaysConsumeSystemBars = args.argi2 != 0;
@@ -7413,10 +7323,9 @@ public final class ViewRootImpl implements ViewParent,
(int) (mView.getMeasuredWidth() * appScale + 0.5f),
(int) (mView.getMeasuredHeight() * appScale + 0.5f), viewVisibility,
insetsPending ? WindowManagerGlobal.RELAYOUT_INSETS_PENDING : 0, frameNumber,
- mTmpFrame, mPendingContentInsets, mPendingVisibleInsets,
- mPendingStableInsets, mPendingBackDropFrame, mPendingDisplayCutout,
- mPendingMergedConfiguration, mSurfaceControl, mTempInsets, mSurfaceSize,
- mBlastSurfaceControl);
+ mTmpFrame, mTmpRect, mTmpRect, mTmpRect, mPendingBackDropFrame,
+ mPendingDisplayCutout, mPendingMergedConfiguration, mSurfaceControl, mTempInsets,
+ mSurfaceSize, mBlastSurfaceControl);
if (mSurfaceControl.isValid()) {
if (!mUseBLASTAdapter) {
mSurface.copyFrom(mSurfaceControl);
@@ -7437,9 +7346,6 @@ public final class ViewRootImpl implements ViewParent,
if (mTranslator != null) {
mTranslator.translateRectInScreenToAppWinFrame(mTmpFrame);
- mTranslator.translateRectInScreenToAppWindow(mPendingContentInsets);
- mTranslator.translateRectInScreenToAppWindow(mPendingVisibleInsets);
- mTranslator.translateRectInScreenToAppWindow(mPendingStableInsets);
}
setFrame(mTmpFrame);
mInsetsController.onStateChanged(mTempInsets);
diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java
index 4050da1b5cb1..8bf1ade876ca 100644
--- a/core/java/android/view/WindowManagerImpl.java
+++ b/core/java/android/view/WindowManagerImpl.java
@@ -278,7 +278,7 @@ public final class WindowManagerImpl implements WindowManager {
if (ViewRootImpl.sNewInsetsMode == NEW_INSETS_MODE_FULL) {
return insetsState.calculateInsets(bounds, null /* ignoringVisibilityState*/,
isScreenRound, alwaysConsumeSystemBars, displayCutout.get(),
- systemWindowInsets, stableInsets, SOFT_INPUT_ADJUST_NOTHING,
+ SOFT_INPUT_ADJUST_NOTHING,
SYSTEM_UI_FLAG_VISIBLE, null /* typeSideMap */);
} else {
return new WindowInsets.Builder()