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
This commit is contained in:
Piotr Wilczyński
2023-03-24 17:00:52 +00:00
parent 8e9d00cddb
commit ca58ae12c1
2 changed files with 10 additions and 2 deletions

View File

@@ -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;

View File

@@ -302,9 +302,16 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener {
}
public void forEachLocked(Consumer<LogicalDisplay> consumer) {
forEachLocked(consumer, /* includeDisabled= */ true);
}
public void forEachLocked(Consumer<LogicalDisplay> 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);
}
}
}