summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/wm/DisplayWindowController.java32
1 files changed, 19 insertions, 13 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/wm/DisplayWindowController.java b/packages/SystemUI/src/com/android/systemui/wm/DisplayWindowController.java
index aa56ffb18554..aed90eb7310d 100644
--- a/packages/SystemUI/src/com/android/systemui/wm/DisplayWindowController.java
+++ b/packages/SystemUI/src/com/android/systemui/wm/DisplayWindowController.java
@@ -99,13 +99,17 @@ public class DisplayWindowController {
if (mDisplays.get(displayId) != null) {
return;
}
+ Display display = getDisplay(displayId);
+ if (display == null) {
+ // It's likely that the display is private to some app and thus not
+ // accessible by system-ui.
+ return;
+ }
DisplayRecord record = new DisplayRecord();
record.mDisplayId = displayId;
- // TODO(b/146566787): disabled for MultiDisplayActivityLaunchTests
- // Display display = getDisplay(displayId);
- // record.mContext = (displayId == Display.DEFAULT_DISPLAY) ? mContext
- // : mContext.createDisplayContext(display);
- // record.mDisplayLayout = new DisplayLayout(record.mContext, display);
+ record.mContext = (displayId == Display.DEFAULT_DISPLAY) ? mContext
+ : mContext.createDisplayContext(display);
+ record.mDisplayLayout = new DisplayLayout(record.mContext, display);
mDisplays.put(displayId, record);
for (int i = 0; i < mDisplayChangedListeners.size(); ++i) {
mDisplayChangedListeners.get(i).onDisplayAdded(displayId);
@@ -124,14 +128,13 @@ public class DisplayWindowController {
+ " display.");
return;
}
- // TODO(b/146566787): disabled for MultiDisplaySystemDecorationTests
- // Display display = getDisplay(displayId);
- // Context perDisplayContext = mContext;
- // if (displayId != Display.DEFAULT_DISPLAY) {
- // perDisplayContext = mContext.createDisplayContext(display);
- // }
- // dr.mContext = perDisplayContext.createConfigurationContext(newConfig);
- // dr.mDisplayLayout = new DisplayLayout(dr.mContext, display);
+ Display display = getDisplay(displayId);
+ Context perDisplayContext = mContext;
+ if (displayId != Display.DEFAULT_DISPLAY) {
+ perDisplayContext = mContext.createDisplayContext(display);
+ }
+ dr.mContext = perDisplayContext.createConfigurationContext(newConfig);
+ dr.mDisplayLayout = new DisplayLayout(dr.mContext, display);
for (int i = 0; i < mDisplayChangedListeners.size(); ++i) {
mDisplayChangedListeners.get(i).onDisplayConfigurationChanged(
displayId, newConfig);
@@ -144,6 +147,9 @@ public class DisplayWindowController {
public void onDisplayRemoved(int displayId) {
mHandler.post(() -> {
synchronized (mDisplays) {
+ if (mDisplays.get(displayId) == null) {
+ return;
+ }
for (int i = mDisplayChangedListeners.size() - 1; i >= 0; --i) {
mDisplayChangedListeners.get(i).onDisplayRemoved(displayId);
}