From ca58ae12c1060d5804254280cdeb5bfecc6a2c63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wilczy=C5=84ski?= Date: Fri, 24 Mar 2023 17:00:52 +0000 Subject: [PATCH] Don't update desired display mode specs for disabled displays Bug: 267460636 Test: atest com.android.server.display Test: adb logcat | grep -i "Asked about unknown display" Change-Id: I50aa11a7812aeaae74b7c1d5f2d4bd7a77a3acf2 --- .../android/server/display/DisplayManagerService.java | 3 ++- .../com/android/server/display/LogicalDisplayMapper.java | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index ea157c89f675b..470d701a85ce5 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -4579,7 +4579,8 @@ public final class DisplayManagerService extends SystemService { public void onDesiredDisplayModeSpecsChanged() { synchronized (mSyncRoot) { mChanged = false; - mLogicalDisplayMapper.forEachLocked(mSpecsChangedConsumer); + mLogicalDisplayMapper.forEachLocked(mSpecsChangedConsumer, + /* includeDisabled= */ false); if (mChanged) { scheduleTraversalLocked(false); mChanged = false; diff --git a/services/core/java/com/android/server/display/LogicalDisplayMapper.java b/services/core/java/com/android/server/display/LogicalDisplayMapper.java index 250ba4350f1d3..424eedc876ec2 100644 --- a/services/core/java/com/android/server/display/LogicalDisplayMapper.java +++ b/services/core/java/com/android/server/display/LogicalDisplayMapper.java @@ -302,9 +302,16 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { } public void forEachLocked(Consumer consumer) { + forEachLocked(consumer, /* includeDisabled= */ true); + } + + public void forEachLocked(Consumer consumer, boolean includeDisabled) { final int count = mLogicalDisplays.size(); for (int i = 0; i < count; i++) { - consumer.accept(mLogicalDisplays.valueAt(i)); + LogicalDisplay display = mLogicalDisplays.valueAt(i); + if (display.isEnabledLocked() || includeDisabled) { + consumer.accept(display); + } } }