Merge "Always copy sources to outInsetsState before writeToParcel" into tm-qpr-dev

This commit is contained in:
Tiger Huang
2022-08-18 11:29:47 +00:00
committed by Android (Google) Code Review

View File

@@ -1866,7 +1866,7 @@ public class WindowManagerService extends IWindowManager.Stub
displayContent.getInsetsStateController().updateAboveInsetsState( displayContent.getInsetsStateController().updateAboveInsetsState(
false /* notifyInsetsChanged */); false /* notifyInsetsChanged */);
outInsetsState.set(win.getCompatInsetsState(), win.isClientLocal()); outInsetsState.set(win.getCompatInsetsState(), true /* copySources */);
getInsetsSourceControls(win, outActiveControls); getInsetsSourceControls(win, outActiveControls);
if (win.mLayoutAttached) { if (win.mLayoutAttached) {
@@ -2560,7 +2560,7 @@ public class WindowManagerService extends IWindowManager.Stub
} }
if (outInsetsState != null) { if (outInsetsState != null) {
outInsetsState.set(win.getCompatInsetsState(), win.isClientLocal()); outInsetsState.set(win.getCompatInsetsState(), true /* copySources */);
} }
ProtoLog.v(WM_DEBUG_FOCUS, "Relayout of %s: focusMayChange=%b", ProtoLog.v(WM_DEBUG_FOCUS, "Relayout of %s: focusMayChange=%b",
@@ -8878,7 +8878,6 @@ public class WindowManagerService extends IWindowManager.Stub
@Override @Override
public boolean getWindowInsets(WindowManager.LayoutParams attrs, int displayId, public boolean getWindowInsets(WindowManager.LayoutParams attrs, int displayId,
InsetsState outInsetsState) { InsetsState outInsetsState) {
final boolean fromLocal = Binder.getCallingPid() == MY_PID;
final int uid = Binder.getCallingUid(); final int uid = Binder.getCallingUid();
final long origId = Binder.clearCallingIdentity(); final long origId = Binder.clearCallingIdentity();
try { try {
@@ -8892,10 +8891,8 @@ public class WindowManagerService extends IWindowManager.Stub
final float overrideScale = mAtmService.mCompatModePackages.getCompatScale( final float overrideScale = mAtmService.mCompatModePackages.getCompatScale(
attrs.packageName, uid); attrs.packageName, uid);
final InsetsState state = dc.getInsetsPolicy().getInsetsForWindowMetrics(attrs); final InsetsState state = dc.getInsetsPolicy().getInsetsForWindowMetrics(attrs);
final boolean hasCompatScale = outInsetsState.set(state, true /* copySources */);
WindowState.hasCompatScale(attrs, token, overrideScale); if (WindowState.hasCompatScale(attrs, token, overrideScale)) {
outInsetsState.set(state, hasCompatScale || fromLocal);
if (hasCompatScale) {
final float compatScale = token != null && token.hasSizeCompatBounds() final float compatScale = token != null && token.hasSizeCompatBounds()
? token.getSizeCompatScale() * overrideScale ? token.getSizeCompatScale() * overrideScale
: overrideScale; : overrideScale;