diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayArea.java | 5 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/DisplayAreaOrganizerTest.java | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayArea.java b/services/core/java/com/android/server/wm/DisplayArea.java index 345cfb0aad71..a45a15ba2012 100644 --- a/services/core/java/com/android/server/wm/DisplayArea.java +++ b/services/core/java/com/android/server/wm/DisplayArea.java @@ -66,6 +66,7 @@ public class DisplayArea<T extends WindowContainer> extends WindowContainer<T> { final int mFeatureId; private final DisplayAreaOrganizerController mOrganizerController; IDisplayAreaOrganizer mOrganizer; + private final Configuration mTmpConfiguration = new Configuration(); DisplayArea(WindowManagerService wms, Type type, String name) { this(wms, type, name, FEATURE_UNDEFINED); @@ -162,8 +163,10 @@ public class DisplayArea<T extends WindowContainer> extends WindowContainer<T> { @Override public void onConfigurationChanged(Configuration newParentConfig) { + mTmpConfiguration.setTo(getConfiguration()); super.onConfigurationChanged(newParentConfig); - if (mOrganizer != null) { + + if (mOrganizer != null && getConfiguration().diff(mTmpConfiguration) != 0) { mOrganizerController.onDisplayAreaInfoChanged(mOrganizer, this); } } diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaOrganizerTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaOrganizerTest.java index 6a1f50d7e58a..f4b50dc6b553 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaOrganizerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaOrganizerTest.java @@ -23,6 +23,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.content.res.Configuration; import android.graphics.Rect; import android.os.Binder; import android.os.RemoteException; @@ -91,5 +92,11 @@ public class DisplayAreaOrganizerTest extends WindowTestsBase { mDisplayContent.setBounds(new Rect(0, 0, 1000, 1000)); verify(organizer).onDisplayAreaInfoChanged(any()); + + Configuration tmpConfiguration = new Configuration(); + tmpConfiguration.setTo(mDisplayContent.getRequestedOverrideConfiguration()); + mDisplayContent.onRequestedOverrideConfigurationChanged(tmpConfiguration); + // Ensure it was still only called once if the bounds didn't change + verify(organizer).onDisplayAreaInfoChanged(any()); } } |