diff options
| author | 2020-07-02 11:21:47 +0000 | |
|---|---|---|
| committer | 2020-07-02 11:21:47 +0000 | |
| commit | b79a00b3b520565c949dafdf984af11b164755ad (patch) | |
| tree | 00365d7eb82488679594f0b7b1c138f4e9a1fe77 | |
| parent | f858773357d6ebbeec7e008df3c1ae309baf9072 (diff) | |
| parent | 5d717b85a1a30ec8970d95ea9bcb2d6cadd15bc9 (diff) | |
Merge "Apply the requested insets sources if possible" into rvc-dev am: 5d717b85a1
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12055450
Change-Id: I4f2bbaa9be685ea789fa58d153f0d5dc332304f8
| -rw-r--r-- | services/core/java/com/android/server/wm/TaskSnapshotController.java | 14 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/TaskSnapshotSurface.java | 5 |
2 files changed, 17 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java index 51cf858715b4..c2021303c11c 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotController.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java @@ -40,6 +40,7 @@ import android.util.ArraySet; import android.util.Slog; import android.view.InsetsSource; import android.view.InsetsState; +import android.view.InsetsState.InternalInsetsType; import android.view.SurfaceControl; import android.view.ThreadedRenderer; import android.view.WindowInsets; @@ -480,7 +481,9 @@ class TaskSnapshotController { task.getTaskDescription().getBackgroundColor(), 255); final LayoutParams attrs = mainWindow.getAttrs(); 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 SystemBarBackgroundPainter decorPainter = new SystemBarBackgroundPainter(attrs.flags, attrs.privateFlags, attrs.systemUiVisibility, task.getTaskDescription(), @@ -600,6 +603,15 @@ class TaskSnapshotController { 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) { return state.calculateInsets(frame, null /* ignoringVisibilityState */, false /* isScreenRound */, false /* alwaysConsumeSystemBars */, diff --git a/services/core/java/com/android/server/wm/TaskSnapshotSurface.java b/services/core/java/com/android/server/wm/TaskSnapshotSurface.java index 3fc09c93550c..448b4aae7a88 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotSurface.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotSurface.java @@ -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.server.wm.ProtoLogGroup.WM_DEBUG_STARTING_WINDOW; 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_WM; @@ -243,7 +244,9 @@ class TaskSnapshotSurface implements StartingSurface { final InsetsPolicy insetsPolicy = topFullscreenOpaqueWindow.getDisplayContent() .getInsetsPolicy(); - insetsState = insetsPolicy.getInsetsForDispatch(topFullscreenOpaqueWindow); + insetsState = + new InsetsState(insetsPolicy.getInsetsForDispatch(topFullscreenOpaqueWindow)); + mergeInsetsSources(insetsState, topFullscreenOpaqueWindow.getRequestedInsetsState()); } try { final int res = session.addToDisplay(window, window.mSeq, layoutParams, |