summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vinit Nayak <peanutbutter@google.com> 2025-03-24 08:49:34 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2025-03-24 08:49:34 -0700
commit03ec3e805e771ecda4b4775b533d03b0f00f194b (patch)
treef6d823d70ab512fb85c3681919d52b1c3c6d4876
parentd6ed80772d1e711d875a1dba336a9ac88d99788d (diff)
parentd15777c584b654fb8bf0236bd3605a0f75291c0e (diff)
Merge "Only add Dim layers to transaction if not in 50/50 split" into main
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitState.java12
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java19
2 files changed, 23 insertions, 8 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitState.java
index ad0e7fc187e9..394c445787b4 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitState.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitState.java
@@ -17,6 +17,10 @@
package com.android.wm.shell.common.split;
import static com.android.wm.shell.shared.split.SplitScreenConstants.NOT_IN_SPLIT;
+import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_2_10_90;
+import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_2_90_10;
+import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_3_10_45_45;
+import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_3_45_45_10;
import static com.android.wm.shell.shared.split.SplitScreenConstants.SplitScreenState;
import android.graphics.Rect;
@@ -62,4 +66,12 @@ public class SplitState {
public List<RectF> getCurrentLayout() {
return getLayout(mState);
}
+
+ /** @return {@code true} if at least one app is partially offscreen in the current layout. */
+ public boolean currentStateSupportsOffscreenApps() {
+ return mState == SNAP_TO_2_10_90
+ || mState == SNAP_TO_2_90_10
+ || mState == SNAP_TO_3_10_45_45
+ || mState == SNAP_TO_3_45_45_10;
+ }
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
index 10db5ca03637..d240aca522bb 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
@@ -3618,9 +3618,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
finishEnterSplitScreen(finishT);
addDividerBarToTransition(info, true /* show */);
- if (Flags.enableFlexibleTwoAppSplit()) {
- addAllDimLayersToTransition(info, true /* show */);
- }
+ addAllDimLayersToTransition(info, true /* show */);
return true;
}
@@ -3871,9 +3869,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
}
addDividerBarToTransition(info, false /* show */);
- if (Flags.enableFlexibleTwoAppSplit()) {
- addAllDimLayersToTransition(info, false /* show */);
- }
+ addAllDimLayersToTransition(info, false /* show */);
}
/** Call this when the recents animation canceled during split-screen. */
@@ -3999,8 +3995,15 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
info.addChange(barChange);
}
- /** Add dim layers to the transition, so that they can be hidden/shown when animation starts. */
+ /**
+ * Add dim layers to the transition, so that they can be hidden/shown when animation starts.
+ * They're only added if there is at least one offscreen app.
+ */
private void addAllDimLayersToTransition(@NonNull TransitionInfo info, boolean show) {
+ if (!mSplitState.currentStateSupportsOffscreenApps()) {
+ return;
+ }
+
if (Flags.enableFlexibleSplit()) {
List<StageTaskListener> stages = mStageOrderOperator.getActiveStages();
for (int i = 0; i < stages.size(); i++) {
@@ -4008,7 +4011,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
mSplitState.getCurrentLayout().get(i).roundOut(mTempRect1);
addDimLayerToTransition(info, show, stage, mTempRect1);
}
- } else {
+ } else if (enableFlexibleTwoAppSplit()) {
addDimLayerToTransition(info, show, mMainStage, getMainStageBounds());
addDimLayerToTransition(info, show, mSideStage, getSideStageBounds());
}