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

Commit ce5ab416 authored by Automerger Merge Worker's avatar Automerger Merge Worker Committed by Android (Google) Code Review
Browse files

Merge "Merge "Store brightnessThrottlingDataId in DisplayInfo" into udc-dev...

Merge "Merge "Store brightnessThrottlingDataId in DisplayInfo" into udc-dev am: 07828885 am: 4dcdef8b" into udc-d1-dev-plus-aosp
parents c526ca83 82c2846b
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -360,6 +360,14 @@ public final class DisplayInfo implements Parcelable {
    public SparseArray<SurfaceControl.RefreshRateRange> thermalRefreshRateThrottling =
            new SparseArray<>();

    /**
     * The ID of the brightness throttling data that should be used. This can change e.g. in
     * concurrent displays mode in which a stricter brightness throttling policy might need to be
     * used.
     */
    @Nullable
    public String thermalBrightnessThrottlingDataId;

    public static final @android.annotation.NonNull Creator<DisplayInfo> CREATOR = new Creator<DisplayInfo>() {
        @Override
        public DisplayInfo createFromParcel(Parcel source) {
@@ -437,7 +445,9 @@ public final class DisplayInfo implements Parcelable {
                && Objects.equals(displayShape, other.displayShape)
                && Objects.equals(layoutLimitedRefreshRate, other.layoutLimitedRefreshRate)
                && BrightnessSynchronizer.floatEquals(hdrSdrRatio, other.hdrSdrRatio)
                && thermalRefreshRateThrottling.contentEquals(other.thermalRefreshRateThrottling);
                && thermalRefreshRateThrottling.contentEquals(other.thermalRefreshRateThrottling)
                && Objects.equals(
                thermalBrightnessThrottlingDataId, other.thermalBrightnessThrottlingDataId);
    }

    @Override
@@ -495,6 +505,7 @@ public final class DisplayInfo implements Parcelable {
        layoutLimitedRefreshRate = other.layoutLimitedRefreshRate;
        hdrSdrRatio = other.hdrSdrRatio;
        thermalRefreshRateThrottling = other.thermalRefreshRateThrottling;
        thermalBrightnessThrottlingDataId = other.thermalBrightnessThrottlingDataId;
    }

    public void readFromParcel(Parcel source) {
@@ -559,6 +570,7 @@ public final class DisplayInfo implements Parcelable {
        hdrSdrRatio = source.readFloat();
        thermalRefreshRateThrottling = source.readSparseArray(null,
                SurfaceControl.RefreshRateRange.class);
        thermalBrightnessThrottlingDataId = source.readString8();
    }

    @Override
@@ -620,6 +632,7 @@ public final class DisplayInfo implements Parcelable {
        dest.writeTypedObject(layoutLimitedRefreshRate, flags);
        dest.writeFloat(hdrSdrRatio);
        dest.writeSparseArray(thermalRefreshRateThrottling);
        dest.writeString8(thermalBrightnessThrottlingDataId);
    }

    @Override
@@ -889,6 +902,8 @@ public final class DisplayInfo implements Parcelable {
        }
        sb.append(", thermalRefreshRateThrottling ");
        sb.append(thermalRefreshRateThrottling);
        sb.append(", thermalBrightnessThrottlingDataId ");
        sb.append(thermalBrightnessThrottlingDataId);
        sb.append("}");
        return sb.toString();
    }
+7 −5
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ import com.android.server.display.whitebalance.DisplayWhiteBalanceSettings;
import com.android.server.policy.WindowManagerPolicy;

import java.io.PrintWriter;
import java.util.Objects;

/**
 * Controls the power state of the display.
@@ -605,7 +606,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        mLastBrightnessEvent = new BrightnessEvent(mDisplayId);
        mTempBrightnessEvent = new BrightnessEvent(mDisplayId);
        mThermalBrightnessThrottlingDataId =
            logicalDisplay.getThermalBrightnessThrottlingDataIdLocked();
                logicalDisplay.getDisplayInfoLocked().thermalBrightnessThrottlingDataId;

        if (mDisplayId == Display.DEFAULT_DISPLAY) {
            mBatteryStats = BatteryStatsService.getService();
@@ -955,7 +956,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                && mLogicalDisplay.getPrimaryDisplayDeviceLocked()
                .getDisplayDeviceInfoLocked().type == Display.TYPE_INTERNAL;
        final String thermalBrightnessThrottlingDataId =
                mLogicalDisplay.getThermalBrightnessThrottlingDataIdLocked();
                mLogicalDisplay.getDisplayInfoLocked().thermalBrightnessThrottlingDataId;
        mHandler.postAtTime(() -> {
            boolean changed = false;
            if (mDisplayDevice != device) {
@@ -972,8 +973,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                // last command that was sent to change it's state. Let's assume it is unknown so
                // that we trigger a change immediately.
                mPowerState.resetScreenState();
            } else if (
                    !mThermalBrightnessThrottlingDataId.equals(thermalBrightnessThrottlingDataId)) {
            } else if (!Objects.equals(mThermalBrightnessThrottlingDataId,
                    thermalBrightnessThrottlingDataId)) {
                changed = true;
                mThermalBrightnessThrottlingDataId = thermalBrightnessThrottlingDataId;
                mBrightnessThrottler.loadThermalBrightnessThrottlingDataFromDisplayDeviceConfig(
@@ -2189,7 +2190,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                () -> {
                    sendUpdatePowerState();
                    postBrightnessChangeRunnable();
                }, mUniqueDisplayId, mLogicalDisplay.getThermalBrightnessThrottlingDataIdLocked(),
                }, mUniqueDisplayId,
                mLogicalDisplay.getDisplayInfoLocked().thermalBrightnessThrottlingDataId,
                ddConfig.getThermalBrightnessThrottlingDataMapByThrottlingId());
    }

+7 −5
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ import com.android.server.display.whitebalance.DisplayWhiteBalanceSettings;
import com.android.server.policy.WindowManagerPolicy;

import java.io.PrintWriter;
import java.util.Objects;

/**
 * Controls the power state of the display.
@@ -488,7 +489,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
        mAutomaticBrightnessStrategy = new AutomaticBrightnessStrategy(context, mDisplayId);
        mTag = "DisplayPowerController2[" + mDisplayId + "]";
        mThermalBrightnessThrottlingDataId =
            logicalDisplay.getThermalBrightnessThrottlingDataIdLocked();
                logicalDisplay.getDisplayInfoLocked().thermalBrightnessThrottlingDataId;

        mDisplayDevice = mLogicalDisplay.getPrimaryDisplayDeviceLocked();
        mUniqueDisplayId = logicalDisplay.getPrimaryDisplayDeviceLocked().getUniqueId();
@@ -760,7 +761,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
                && mLogicalDisplay.getPrimaryDisplayDeviceLocked()
                .getDisplayDeviceInfoLocked().type == Display.TYPE_INTERNAL;
        final String thermalBrightnessThrottlingDataId =
                mLogicalDisplay.getThermalBrightnessThrottlingDataIdLocked();
                mLogicalDisplay.getDisplayInfoLocked().thermalBrightnessThrottlingDataId;

        mHandler.postAtTime(() -> {
            boolean changed = false;
@@ -778,8 +779,8 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
                // last command that was sent to change it's state. Let's assume it is unknown so
                // that we trigger a change immediately.
                mPowerState.resetScreenState();
            } else if (
                    !mThermalBrightnessThrottlingDataId.equals(thermalBrightnessThrottlingDataId)) {
            } else if (!Objects.equals(mThermalBrightnessThrottlingDataId,
                    thermalBrightnessThrottlingDataId)) {
                changed = true;
                mThermalBrightnessThrottlingDataId = thermalBrightnessThrottlingDataId;
                mBrightnessThrottler.loadThermalBrightnessThrottlingDataFromDisplayDeviceConfig(
@@ -1820,7 +1821,8 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
                () -> {
                    sendUpdatePowerState();
                    postBrightnessChangeRunnable();
                }, mUniqueDisplayId, mLogicalDisplay.getThermalBrightnessThrottlingDataIdLocked(),
                }, mUniqueDisplayId,
                mLogicalDisplay.getDisplayInfoLocked().thermalBrightnessThrottlingDataId,
                ddConfig.getThermalBrightnessThrottlingDataMapByThrottlingId());
    }

+6 −9
Original line number Diff line number Diff line
@@ -203,6 +203,7 @@ final class LogicalDisplay {
        mIsEnabled = true;
        mIsInTransition = false;
        mThermalBrightnessThrottlingDataId = DisplayDeviceConfig.DEFAULT_ID;
        mBaseDisplayInfo.thermalBrightnessThrottlingDataId = mThermalBrightnessThrottlingDataId;
    }

    public void setDevicePositionLocked(int position) {
@@ -514,6 +515,7 @@ final class LogicalDisplay {

            mBaseDisplayInfo.layoutLimitedRefreshRate = mLayoutLimitedRefreshRate;
            mBaseDisplayInfo.thermalRefreshRateThrottling = mThermalRefreshRateThrottling;
            mBaseDisplayInfo.thermalBrightnessThrottlingDataId = mThermalBrightnessThrottlingDataId;

            mPrimaryDisplayDeviceInfo = deviceInfo;
            mInfo.set(null);
@@ -885,20 +887,15 @@ final class LogicalDisplay {
        mIsInTransition = isInTransition;
    }

    /**
     * @return The ID of the brightness throttling data that this display should use.
     */
    public String getThermalBrightnessThrottlingDataIdLocked() {
        return mThermalBrightnessThrottlingDataId;
    }

    /**
     * @param brightnessThrottlingDataId The ID of the brightness throttling data that this
     *                                  display should use.
     */
    public void setThermalBrightnessThrottlingDataIdLocked(String brightnessThrottlingDataId) {
        mThermalBrightnessThrottlingDataId =
                brightnessThrottlingDataId;
        if (!Objects.equals(brightnessThrottlingDataId, mThermalBrightnessThrottlingDataId)) {
            mThermalBrightnessThrottlingDataId = brightnessThrottlingDataId;
            mDirty = true;
        }
    }

    /**
+18 −5
Original line number Diff line number Diff line
@@ -596,17 +596,17 @@ public final class DisplayPowerController2Test {
        // We should still set screen state for the default display
        DisplayPowerRequest dpr = new DisplayPowerRequest();
        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1);
        advanceTime(1); // Run updatePowerState
        verify(mHolder.displayPowerState, times(2)).setScreenState(anyInt());

        mHolder = createDisplayPowerController(42, UNIQUE_ID);

        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1);
        advanceTime(1); // Run updatePowerState
        verify(mHolder.displayPowerState, never()).setScreenState(anyInt());

        mHolder.dpc.onBootCompleted();
        advanceTime(1);
        advanceTime(1); // Run updatePowerState
        verify(mHolder.displayPowerState).setScreenState(anyInt());
    }

@@ -822,6 +822,21 @@ public final class DisplayPowerController2Test {
        );
    }

    @Test
    public void testUpdateBrightnessThrottlingDataId() {
        mHolder.display.getDisplayInfoLocked().thermalBrightnessThrottlingDataId =
                "throttling-data-id";
        clearInvocations(mHolder.display.getPrimaryDisplayDeviceLocked().getDisplayDeviceConfig());

        mHolder.dpc.onDisplayChanged(mHolder.hbmMetadata, Layout.NO_LEAD_DISPLAY);
        DisplayPowerRequest dpr = new DisplayPowerRequest();
        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1); // Run updatePowerState

        verify(mHolder.display.getPrimaryDisplayDeviceLocked().getDisplayDeviceConfig())
                .getThermalBrightnessThrottlingDataMapByThrottlingId();
    }

    /**
     * Creates a mock and registers it to {@link LocalServices}.
     */
@@ -862,8 +877,6 @@ public final class DisplayPowerController2Test {
        when(logicalDisplayMock.getDisplayInfoLocked()).thenReturn(info);
        when(logicalDisplayMock.isEnabledLocked()).thenReturn(isEnabled);
        when(logicalDisplayMock.isInTransitionLocked()).thenReturn(false);
        when(logicalDisplayMock.getThermalBrightnessThrottlingDataIdLocked()).thenReturn(
                DisplayDeviceConfig.DEFAULT_ID);
        when(displayDeviceMock.getDisplayDeviceInfoLocked()).thenReturn(deviceInfo);
        when(displayDeviceMock.getUniqueId()).thenReturn(uniqueId);
        when(displayDeviceMock.getDisplayDeviceConfig()).thenReturn(displayDeviceConfigMock);
Loading