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

Commit 54b6315f authored by Fiona Campbell's avatar Fiona Campbell Committed by Automerger Merge Worker
Browse files

Merge "Enable AutoBrightness per display" into tm-qpr-dev am: 0a73b2fa

parents 6423dddf 0a73b2fa
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -220,6 +220,11 @@ public class BrightnessTracker {
    }

    private void backgroundStart(float initialBrightness) {
        synchronized (mDataCollectionLock) {
            if (mStarted) {
                return;
            }
        }
        if (DEBUG) {
            Slog.d(TAG, "Background start");
        }
@@ -250,6 +255,11 @@ public class BrightnessTracker {

    /** Stop listening for events */
    void stop() {
        synchronized (mDataCollectionLock) {
            if (!mStarted) {
                return;
            }
        }
        if (DEBUG) {
            Slog.d(TAG, "Stop");
        }
+38 −4
Original line number Diff line number Diff line
@@ -150,7 +150,7 @@ import javax.xml.datatype.DatatypeConfigurationException;
 *       <quirk>canSetBrightnessViaHwc</quirk>
 *      </quirks>
 *
 *      <autoBrightness>
 *      <autoBrightness enable="true">
 *          <brighteningLightDebounceMillis>
 *              2000
 *          </brighteningLightDebounceMillis>
@@ -507,6 +507,11 @@ public class DisplayDeviceConfig {
    private long mAutoBrightnessDarkeningLightDebounce =
            INVALID_AUTO_BRIGHTNESS_LIGHT_DEBOUNCE;

    // This setting allows non-default displays to have autobrightness enabled.
    private boolean mAutoBrightnessAvailable = false;
    // This stores the raw value loaded from the config file - true if not written.
    private boolean mDdcAutoBrightnessAvailable = true;

    // Brightness Throttling data may be updated via the DeviceConfig. Here we store the original
    // data, which comes from the ddc, and the current one, which may be the DeviceConfig
    // overwritten value.
@@ -1119,6 +1124,10 @@ public class DisplayDeviceConfig {
        return mProximitySensor;
    }

    boolean isAutoBrightnessAvailable() {
        return mAutoBrightnessAvailable;
    }

    /**
     * @param quirkValue The quirk to test.
     * @return {@code true} if the specified quirk is present in this configuration, {@code false}
@@ -1271,6 +1280,8 @@ public class DisplayDeviceConfig {
                + mAutoBrightnessDarkeningLightDebounce
                + ", mBrightnessLevelsLux= " + Arrays.toString(mBrightnessLevelsLux)
                + ", mBrightnessLevelsNits= " + Arrays.toString(mBrightnessLevelsNits)
                + ", mDdcAutoBrightnessAvailable= " + mDdcAutoBrightnessAvailable
                + ", mAutoBrightnessAvailable= " + mAutoBrightnessAvailable
                + "}";
    }

@@ -1349,6 +1360,7 @@ public class DisplayDeviceConfig {
        loadBrightnessChangeThresholdsFromXml();
        setProxSensorUnspecified();
        loadAutoBrightnessConfigsFromConfigXml();
        loadAutoBrightnessAvailableFromConfigXml();
        mLoadedFrom = "<config.xml>";
    }

@@ -1367,6 +1379,7 @@ public class DisplayDeviceConfig {
        setSimpleMappingStrategyValues();
        loadAmbientLightSensorFromConfigXml();
        setProxSensorUnspecified();
        loadAutoBrightnessAvailableFromConfigXml();
    }

    private void copyUninitializedValuesFromSecondaryConfig(DisplayConfiguration defaultConfig) {
@@ -1559,9 +1572,11 @@ public class DisplayDeviceConfig {
    }

    private void loadAutoBrightnessConfigValues(DisplayConfiguration config) {
        loadAutoBrightnessBrighteningLightDebounce(config.getAutoBrightness());
        loadAutoBrightnessDarkeningLightDebounce(config.getAutoBrightness());
        loadAutoBrightnessDisplayBrightnessMapping(config.getAutoBrightness());
        final AutoBrightness autoBrightness = config.getAutoBrightness();
        loadAutoBrightnessBrighteningLightDebounce(autoBrightness);
        loadAutoBrightnessDarkeningLightDebounce(autoBrightness);
        loadAutoBrightnessDisplayBrightnessMapping(autoBrightness);
        loadEnableAutoBrightness(autoBrightness);
    }

    /**
@@ -1623,6 +1638,11 @@ public class DisplayDeviceConfig {
        }
    }

    private void loadAutoBrightnessAvailableFromConfigXml() {
        mAutoBrightnessAvailable = mContext.getResources().getBoolean(
                R.bool.config_automatic_brightness_available);
    }

    private void loadBrightnessMapFromConfigXml() {
        // Use the config.xml mapping
        final Resources res = mContext.getResources();
@@ -2263,6 +2283,20 @@ public class DisplayDeviceConfig {
        return levels;
    }

    private void loadEnableAutoBrightness(AutoBrightness autobrightness) {
        // mDdcAutoBrightnessAvailable is initialised to true, so that we fallback to using the
        // config.xml values if the autobrightness tag is not defined in the ddc file.
        // Autobrightness can still be turned off globally via config_automatic_brightness_available
        mDdcAutoBrightnessAvailable = true;
        if (autobrightness != null) {
            mDdcAutoBrightnessAvailable = autobrightness.getEnabled();
        }

        mAutoBrightnessAvailable = mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_automatic_brightness_available)
                && mDdcAutoBrightnessAvailable;
    }

    static class SensorData {
        public String type;
        public String name;
+2 −7
Original line number Diff line number Diff line
@@ -558,13 +558,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        mScreenBrightnessForVrRangeMinimum = clampAbsoluteBrightness(
                pm.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM_VR));

        // Check the setting, but also verify that it is the default display. Only the default
        // display has an automatic brightness controller running.
        // TODO: b/179021925 - Fix to work with multiple displays
        mUseSoftwareAutoBrightnessConfig = resources.getBoolean(
                com.android.internal.R.bool.config_automatic_brightness_available)
                && mDisplayId == Display.DEFAULT_DISPLAY;

        mAllowAutoBrightnessWhileDozingConfig = resources.getBoolean(
                com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing);

@@ -938,6 +931,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
    }

    private void setUpAutoBrightness(Resources resources, Handler handler) {
        mUseSoftwareAutoBrightnessConfig = mDisplayDeviceConfig.isAutoBrightnessAvailable();

        if (!mUseSoftwareAutoBrightnessConfig) {
            return;
        }
+1 −0
Original line number Diff line number Diff line
@@ -383,6 +383,7 @@
    </xs:complexType>

    <xs:complexType name="autoBrightness">
        <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/>
        <xs:sequence>
            <!-- Sets the debounce for autoBrightness brightening in millis-->
            <xs:element name="brighteningLightDebounceMillis" type="xs:nonNegativeInteger"
+2 −0
Original line number Diff line number Diff line
@@ -6,9 +6,11 @@ package com.android.server.display.config {
    method public final java.math.BigInteger getBrighteningLightDebounceMillis();
    method public final java.math.BigInteger getDarkeningLightDebounceMillis();
    method public final com.android.server.display.config.DisplayBrightnessMapping getDisplayBrightnessMapping();
    method public boolean getEnabled();
    method public final void setBrighteningLightDebounceMillis(java.math.BigInteger);
    method public final void setDarkeningLightDebounceMillis(java.math.BigInteger);
    method public final void setDisplayBrightnessMapping(com.android.server.display.config.DisplayBrightnessMapping);
    method public void setEnabled(boolean);
  }

  public class BrightnessThresholds {
Loading