Loading core/java/android/companion/virtual/flags/flags.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,16 @@ flag { is_exported: true } flag { name: "correct_virtual_display_power_state" namespace: "virtual_devices" description: "Fix the virtual display power state" bug: "371125136" metadata { purpose: PURPOSE_BUGFIX } } flag { name: "vdm_settings" namespace: "virtual_devices" Loading services/core/java/com/android/server/display/DisplayManagerService.java +5 −2 Original line number Diff line number Diff line Loading @@ -2614,7 +2614,8 @@ public final class DisplayManagerService extends SystemService { // Blank or unblank the display immediately to match the state requested // by the display power controller (if known). DisplayDeviceInfo info = device.getDisplayDeviceInfoLocked(); if ((info.flags & DisplayDeviceInfo.FLAG_NEVER_BLANK) == 0) { if ((info.flags & DisplayDeviceInfo.FLAG_NEVER_BLANK) == 0 || android.companion.virtualdevice.flags.Flags.correctVirtualDisplayPowerState()) { final LogicalDisplay display = mLogicalDisplayMapper.getDisplayLocked(device); if (display == null) { return null; Loading Loading @@ -5574,7 +5575,9 @@ public final class DisplayManagerService extends SystemService { final DisplayDevice displayDevice = mLogicalDisplayMapper.getDisplayLocked( id).getPrimaryDisplayDeviceLocked(); final int flags = displayDevice.getDisplayDeviceInfoLocked().flags; if ((flags & DisplayDeviceInfo.FLAG_NEVER_BLANK) == 0) { if ((flags & DisplayDeviceInfo.FLAG_NEVER_BLANK) == 0 || android.companion.virtualdevice.flags.Flags .correctVirtualDisplayPowerState()) { final DisplayPowerController displayPowerController = mDisplayPowerControllers.get(id); if (displayPowerController != null) { Loading services/core/java/com/android/server/display/VirtualDisplayAdapter.java +25 −8 Original line number Diff line number Diff line Loading @@ -371,7 +371,15 @@ public class VirtualDisplayAdapter extends DisplayAdapter { mCallback = callback; mProjection = projection; mMediaProjectionCallback = mediaProjectionCallback; if (android.companion.virtualdevice.flags.Flags.correctVirtualDisplayPowerState()) { // The display's power state depends on the power state of the state of its // display / power group, which we don't know here. Initializing to UNKNOWN allows // the first call to requestDisplayStateLocked() to set the correct state. // This also triggers VirtualDisplay.Callback to tell the owner the initial state. mDisplayState = Display.STATE_UNKNOWN; } else { mDisplayState = Display.STATE_ON; } mPendingChanges |= PENDING_SURFACE_CHANGE; mDisplayIdToMirror = virtualDisplayConfig.getDisplayIdToMirror(); mIsWindowManagerMirroring = virtualDisplayConfig.isWindowManagerMirroringEnabled(); Loading Loading @@ -564,6 +572,14 @@ public class VirtualDisplayAdapter extends DisplayAdapter { mInfo.yDpi = mDensityDpi; mInfo.presentationDeadlineNanos = 1000000000L / (int) getRefreshRate(); // 1 frame mInfo.flags = 0; if (android.companion.virtualdevice.flags.Flags.correctVirtualDisplayPowerState()) { if ((mFlags & VIRTUAL_DISPLAY_FLAG_PUBLIC) == 0) { mInfo.flags |= DisplayDeviceInfo.FLAG_PRIVATE; } if ((mFlags & VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR) == 0) { mInfo.flags |= DisplayDeviceInfo.FLAG_OWN_CONTENT_ONLY; } } else { if ((mFlags & VIRTUAL_DISPLAY_FLAG_PUBLIC) == 0) { mInfo.flags |= DisplayDeviceInfo.FLAG_PRIVATE | DisplayDeviceInfo.FLAG_NEVER_BLANK; Loading @@ -573,6 +589,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter { } else { mInfo.flags |= DisplayDeviceInfo.FLAG_OWN_CONTENT_ONLY; } } if ((mFlags & VIRTUAL_DISPLAY_FLAG_OWN_DISPLAY_GROUP) != 0) { mInfo.flags |= DisplayDeviceInfo.FLAG_OWN_DISPLAY_GROUP; } Loading Loading
core/java/android/companion/virtual/flags/flags.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,16 @@ flag { is_exported: true } flag { name: "correct_virtual_display_power_state" namespace: "virtual_devices" description: "Fix the virtual display power state" bug: "371125136" metadata { purpose: PURPOSE_BUGFIX } } flag { name: "vdm_settings" namespace: "virtual_devices" Loading
services/core/java/com/android/server/display/DisplayManagerService.java +5 −2 Original line number Diff line number Diff line Loading @@ -2614,7 +2614,8 @@ public final class DisplayManagerService extends SystemService { // Blank or unblank the display immediately to match the state requested // by the display power controller (if known). DisplayDeviceInfo info = device.getDisplayDeviceInfoLocked(); if ((info.flags & DisplayDeviceInfo.FLAG_NEVER_BLANK) == 0) { if ((info.flags & DisplayDeviceInfo.FLAG_NEVER_BLANK) == 0 || android.companion.virtualdevice.flags.Flags.correctVirtualDisplayPowerState()) { final LogicalDisplay display = mLogicalDisplayMapper.getDisplayLocked(device); if (display == null) { return null; Loading Loading @@ -5574,7 +5575,9 @@ public final class DisplayManagerService extends SystemService { final DisplayDevice displayDevice = mLogicalDisplayMapper.getDisplayLocked( id).getPrimaryDisplayDeviceLocked(); final int flags = displayDevice.getDisplayDeviceInfoLocked().flags; if ((flags & DisplayDeviceInfo.FLAG_NEVER_BLANK) == 0) { if ((flags & DisplayDeviceInfo.FLAG_NEVER_BLANK) == 0 || android.companion.virtualdevice.flags.Flags .correctVirtualDisplayPowerState()) { final DisplayPowerController displayPowerController = mDisplayPowerControllers.get(id); if (displayPowerController != null) { Loading
services/core/java/com/android/server/display/VirtualDisplayAdapter.java +25 −8 Original line number Diff line number Diff line Loading @@ -371,7 +371,15 @@ public class VirtualDisplayAdapter extends DisplayAdapter { mCallback = callback; mProjection = projection; mMediaProjectionCallback = mediaProjectionCallback; if (android.companion.virtualdevice.flags.Flags.correctVirtualDisplayPowerState()) { // The display's power state depends on the power state of the state of its // display / power group, which we don't know here. Initializing to UNKNOWN allows // the first call to requestDisplayStateLocked() to set the correct state. // This also triggers VirtualDisplay.Callback to tell the owner the initial state. mDisplayState = Display.STATE_UNKNOWN; } else { mDisplayState = Display.STATE_ON; } mPendingChanges |= PENDING_SURFACE_CHANGE; mDisplayIdToMirror = virtualDisplayConfig.getDisplayIdToMirror(); mIsWindowManagerMirroring = virtualDisplayConfig.isWindowManagerMirroringEnabled(); Loading Loading @@ -564,6 +572,14 @@ public class VirtualDisplayAdapter extends DisplayAdapter { mInfo.yDpi = mDensityDpi; mInfo.presentationDeadlineNanos = 1000000000L / (int) getRefreshRate(); // 1 frame mInfo.flags = 0; if (android.companion.virtualdevice.flags.Flags.correctVirtualDisplayPowerState()) { if ((mFlags & VIRTUAL_DISPLAY_FLAG_PUBLIC) == 0) { mInfo.flags |= DisplayDeviceInfo.FLAG_PRIVATE; } if ((mFlags & VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR) == 0) { mInfo.flags |= DisplayDeviceInfo.FLAG_OWN_CONTENT_ONLY; } } else { if ((mFlags & VIRTUAL_DISPLAY_FLAG_PUBLIC) == 0) { mInfo.flags |= DisplayDeviceInfo.FLAG_PRIVATE | DisplayDeviceInfo.FLAG_NEVER_BLANK; Loading @@ -573,6 +589,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter { } else { mInfo.flags |= DisplayDeviceInfo.FLAG_OWN_CONTENT_ONLY; } } if ((mFlags & VIRTUAL_DISPLAY_FLAG_OWN_DISPLAY_GROUP) != 0) { mInfo.flags |= DisplayDeviceInfo.FLAG_OWN_DISPLAY_GROUP; } Loading