Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f60b0713 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Correctly initialize virtual display power state" into main

parents cdad37b0 519bd4e7
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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"
+5 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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) {
+25 −8
Original line number Diff line number Diff line
@@ -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();
@@ -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;
@@ -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;
                }