Don't set override display info for ActivityView
ActivityView content should never be letter- or pillar-boxed
and it doesn't have overscan areas, so we can skip setting
display override info for a virtual display that backs it.
Bug: 72220802
Test: Manually resize with ActivityView demo app
Change-Id: I211449eaea50ec5d3214d63e7eb93a1d2ed2c0fd
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index c35c05d..e2e1690 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -305,6 +305,11 @@
int pendingLayoutChanges;
// TODO(multi-display): remove some of the usages.
boolean isDefaultDisplay;
+ /**
+ * Flag indicating whether WindowManager should override info for this display in
+ * DisplayManager.
+ */
+ boolean mShouldOverrideDisplayConfiguration = true;
/** Window tokens that are in the process of exiting, but still on screen for animations. */
final ArrayList<WindowToken> mExitingTokens = new ArrayList<>();
@@ -1177,8 +1182,14 @@
mDisplayInfo.flags &= ~Display.FLAG_SCALING_DISABLED;
}
+ // We usually set the override info in DisplayManager so that we get consistent display
+ // metrics values when displays are changing and don't send out new values until WM is aware
+ // of them. However, we don't do this for displays that serve as containers for ActivityView
+ // because we don't want letter-/pillar-boxing during resize.
+ final DisplayInfo overrideDisplayInfo = mShouldOverrideDisplayConfiguration
+ ? mDisplayInfo : null;
mService.mDisplayManagerInternal.setDisplayInfoOverrideFromWindowManager(mDisplayId,
- mDisplayInfo);
+ overrideDisplayInfo);
mBaseDisplayRect.set(0, 0, dw, dh);