diff options
| -rw-r--r-- | services/java/com/android/server/display/DisplayManagerService.java | 8 | ||||
| -rw-r--r-- | services/java/com/android/server/display/LogicalDisplay.java | 10 |
2 files changed, 15 insertions, 3 deletions
diff --git a/services/java/com/android/server/display/DisplayManagerService.java b/services/java/com/android/server/display/DisplayManagerService.java index 0a4252813188..93896af4b58b 100644 --- a/services/java/com/android/server/display/DisplayManagerService.java +++ b/services/java/com/android/server/display/DisplayManagerService.java @@ -305,6 +305,8 @@ public final class DisplayManagerService extends IDisplayManager.Stub { DisplayDevice device = mDisplayDevices.get(i); device.blankLocked(); } + + scheduleTraversalLocked(false); } } } @@ -322,6 +324,8 @@ public final class DisplayManagerService extends IDisplayManager.Stub { DisplayDevice device = mDisplayDevices.get(i); device.unblankLocked(); } + + scheduleTraversalLocked(false); } } } @@ -755,7 +759,9 @@ public final class DisplayManagerService extends IDisplayManager.Stub { + device.getDisplayDeviceInfoLocked()); return; } else { - display.configureDisplayInTransactionLocked(device); + boolean isBlanked = (mAllDisplayBlankStateFromPowerManager + == DISPLAY_BLANK_STATE_BLANKED); + display.configureDisplayInTransactionLocked(device, isBlanked); } // Update the viewports if needed. diff --git a/services/java/com/android/server/display/LogicalDisplay.java b/services/java/com/android/server/display/LogicalDisplay.java index c4b749c3e90b..680662e538a8 100644 --- a/services/java/com/android/server/display/LogicalDisplay.java +++ b/services/java/com/android/server/display/LogicalDisplay.java @@ -55,6 +55,10 @@ import libcore.util.Objects; final class LogicalDisplay { private final DisplayInfo mBaseDisplayInfo = new DisplayInfo(); + // The layer stack we use when the display has been blanked to prevent any + // of its content from appearing. + private static final int BLANK_LAYER_STACK = -1; + private final int mDisplayId; private final int mLayerStack; private DisplayInfo mOverrideDisplayInfo; // set by the window manager @@ -217,13 +221,15 @@ final class LogicalDisplay { * where the display is being mirrored. * * @param device The display device to modify. + * @param isBlanked True if the device is being blanked. */ - public void configureDisplayInTransactionLocked(DisplayDevice device) { + public void configureDisplayInTransactionLocked(DisplayDevice device, + boolean isBlanked) { final DisplayInfo displayInfo = getDisplayInfoLocked(); final DisplayDeviceInfo displayDeviceInfo = device.getDisplayDeviceInfoLocked(); // Set the layer stack. - device.setLayerStackInTransactionLocked(mLayerStack); + device.setLayerStackInTransactionLocked(isBlanked ? BLANK_LAYER_STACK : mLayerStack); // Set the viewport. // This is the area of the logical display that we intend to show on the |