Merge "Apply the requested insets sources if possible" into rvc-dev

This commit is contained in:
Tiger Huang
2020-07-02 11:12:12 +00:00
committed by Android (Google) Code Review
2 changed files with 17 additions and 2 deletions

View File

@@ -40,6 +40,7 @@ import android.util.ArraySet;
import android.util.Slog; import android.util.Slog;
import android.view.InsetsSource; import android.view.InsetsSource;
import android.view.InsetsState; import android.view.InsetsState;
import android.view.InsetsState.InternalInsetsType;
import android.view.SurfaceControl; import android.view.SurfaceControl;
import android.view.ThreadedRenderer; import android.view.ThreadedRenderer;
import android.view.WindowInsets; import android.view.WindowInsets;
@@ -480,7 +481,9 @@ class TaskSnapshotController {
task.getTaskDescription().getBackgroundColor(), 255); task.getTaskDescription().getBackgroundColor(), 255);
final LayoutParams attrs = mainWindow.getAttrs(); final LayoutParams attrs = mainWindow.getAttrs();
final InsetsPolicy insetsPolicy = mainWindow.getDisplayContent().getInsetsPolicy(); final InsetsPolicy insetsPolicy = mainWindow.getDisplayContent().getInsetsPolicy();
final InsetsState insetsState = insetsPolicy.getInsetsForDispatch(mainWindow); final InsetsState insetsState =
new InsetsState(insetsPolicy.getInsetsForDispatch(mainWindow));
mergeInsetsSources(insetsState, mainWindow.getRequestedInsetsState());
final Rect systemBarInsets = getSystemBarInsets(mainWindow.getFrameLw(), insetsState); final Rect systemBarInsets = getSystemBarInsets(mainWindow.getFrameLw(), insetsState);
final SystemBarBackgroundPainter decorPainter = new SystemBarBackgroundPainter(attrs.flags, final SystemBarBackgroundPainter decorPainter = new SystemBarBackgroundPainter(attrs.flags,
attrs.privateFlags, attrs.systemUiVisibility, task.getTaskDescription(), attrs.privateFlags, attrs.systemUiVisibility, task.getTaskDescription(),
@@ -600,6 +603,15 @@ class TaskSnapshotController {
return 0; return 0;
} }
static void mergeInsetsSources(InsetsState base, InsetsState other) {
for (@InternalInsetsType int type = 0; type < InsetsState.SIZE; type++) {
final InsetsSource source = other.peekSource(type);
if (source != null) {
base.addSource(source);
}
}
}
static Rect getSystemBarInsets(Rect frame, InsetsState state) { static Rect getSystemBarInsets(Rect frame, InsetsState state) {
return state.calculateInsets(frame, null /* ignoringVisibilityState */, return state.calculateInsets(frame, null /* ignoringVisibilityState */,
false /* isScreenRound */, false /* alwaysConsumeSystemBars */, false /* isScreenRound */, false /* alwaysConsumeSystemBars */,

View File

@@ -42,6 +42,7 @@ import static com.android.internal.policy.DecorView.STATUS_BAR_COLOR_VIEW_ATTRIB
import static com.android.internal.policy.DecorView.getNavigationBarRect; import static com.android.internal.policy.DecorView.getNavigationBarRect;
import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_STARTING_WINDOW; import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_STARTING_WINDOW;
import static com.android.server.wm.TaskSnapshotController.getSystemBarInsets; import static com.android.server.wm.TaskSnapshotController.getSystemBarInsets;
import static com.android.server.wm.TaskSnapshotController.mergeInsetsSources;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
@@ -243,7 +244,9 @@ class TaskSnapshotSurface implements StartingSurface {
final InsetsPolicy insetsPolicy = topFullscreenOpaqueWindow.getDisplayContent() final InsetsPolicy insetsPolicy = topFullscreenOpaqueWindow.getDisplayContent()
.getInsetsPolicy(); .getInsetsPolicy();
insetsState = insetsPolicy.getInsetsForDispatch(topFullscreenOpaqueWindow); insetsState =
new InsetsState(insetsPolicy.getInsetsForDispatch(topFullscreenOpaqueWindow));
mergeInsetsSources(insetsState, topFullscreenOpaqueWindow.getRequestedInsetsState());
} }
try { try {
final int res = session.addToDisplay(window, window.mSeq, layoutParams, final int res = session.addToDisplay(window, window.mSeq, layoutParams,