summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/window/flags/windowing_frontend.aconfig10
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java9
2 files changed, 19 insertions, 0 deletions
diff --git a/core/java/android/window/flags/windowing_frontend.aconfig b/core/java/android/window/flags/windowing_frontend.aconfig
index c2e305d72dd0..9f6ea42c6fc4 100644
--- a/core/java/android/window/flags/windowing_frontend.aconfig
+++ b/core/java/android/window/flags/windowing_frontend.aconfig
@@ -180,6 +180,16 @@ flag {
}
flag {
+ name: "app_handle_no_relayout_on_exclusion_change"
+ namespace: "windowing_frontend"
+ description: "Remove unnecessary relayouts for app handle when exclusion regions change"
+ bug: "383672263"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "respect_non_top_visible_fixed_orientation"
namespace: "windowing_frontend"
description: "If top activity is not opaque, respect the fixed orientation of activity behind it"
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
index 39a989ce7c7f..b179741b1259 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
@@ -423,6 +423,15 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
}
@Override
+ void onExclusionRegionChanged(@NonNull Region exclusionRegion) {
+ if (Flags.appHandleNoRelayoutOnExclusionChange() && isAppHandle(mWindowDecorViewHolder)) {
+ // Avoid unnecessary relayouts for app handle. See b/383672263
+ return;
+ }
+ relayout(mTaskInfo, mHasGlobalFocus, exclusionRegion);
+ }
+
+ @Override
void relayout(ActivityManager.RunningTaskInfo taskInfo, boolean hasGlobalFocus,
@NonNull Region displayExclusionRegion) {
final SurfaceControl.Transaction t = mSurfaceControlTransactionSupplier.get();