diff options
author | 2018-11-29 17:28:39 +0000 | |
---|---|---|
committer | 2018-11-29 17:28:39 +0000 | |
commit | e656e67e14af1dead88fad08cc0eb81a87cf4265 (patch) | |
tree | 3ed89ec4ac14791db402e7151a4248f8bd628965 | |
parent | 3bb0e86825d9cf2beded20b0b0d128979a1a7c13 (diff) | |
parent | a75a9458e07ad65a767651d34298e7ac37941248 (diff) |
Merge "Keep initial override configuration from display settings"
3 files changed, 23 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityDisplay.java b/services/core/java/com/android/server/wm/ActivityDisplay.java index 33584d4a1710..84750b385d97 100644 --- a/services/core/java/com/android/server/wm/ActivityDisplay.java +++ b/services/core/java/com/android/server/wm/ActivityDisplay.java @@ -181,6 +181,11 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> mWindowContainerController.onDisplayChanged(); } + @Override + public void onInitializeOverrideConfiguration(Configuration config) { + getOverrideConfiguration().updateFrom(config); + } + void addChild(ActivityStack stack, int position) { if (position == POSITION_BOTTOM) { position = 0; diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index c2bc677f5e39..80d1368427a3 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -233,6 +233,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> final DisplayContent existing = getDisplayContent(displayId); if (existing != null) { + initializeDisplayOverrideConfiguration(controller, existing); existing.setController(controller); return existing; } @@ -242,6 +243,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> if (DEBUG_DISPLAY) Slog.v(TAG_WM, "Adding display=" + display); mService.mDisplayWindowSettings.applySettingsToDisplayLocked(dc); + initializeDisplayOverrideConfiguration(controller, dc); if (mService.mDisplayManagerInternal != null) { mService.mDisplayManagerInternal.setDisplayInfoOverrideFromWindowManager( @@ -254,6 +256,19 @@ class RootWindowContainer extends WindowContainer<DisplayContent> return dc; } + /** + * The display content may have configuration set from {@link #DisplayWindowSettings}. This + * callback let the owner of container know there is existing configuration to prevent the + * values from being replaced by the initializing {@link #ActivityDisplay}. + */ + private void initializeDisplayOverrideConfiguration(DisplayWindowController controller, + DisplayContent displayContent) { + if (controller != null && controller.mListener != null) { + controller.mListener.onInitializeOverrideConfiguration( + displayContent.getOverrideConfiguration()); + } + } + boolean isLayoutNeeded() { final int numDisplays = mChildren.size(); for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) { diff --git a/services/core/java/com/android/server/wm/WindowContainerListener.java b/services/core/java/com/android/server/wm/WindowContainerListener.java index 4b3cd36040c6..3d3d2e02693c 100644 --- a/services/core/java/com/android/server/wm/WindowContainerListener.java +++ b/services/core/java/com/android/server/wm/WindowContainerListener.java @@ -16,6 +16,8 @@ package com.android.server.wm; +import android.content.res.Configuration; + /** * Interface used by the owner/creator of the container to listen to changes with the container. * @see WindowContainerController @@ -23,4 +25,5 @@ package com.android.server.wm; public interface WindowContainerListener { void registerConfigurationChangeListener(ConfigurationContainerListener listener); void unregisterConfigurationChangeListener(ConfigurationContainerListener listener); + default void onInitializeOverrideConfiguration(Configuration config) {} } |