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

Commit bd8c60ec authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Merge cherrypicks of [3811604, 3811605] into pi-release

Change-Id: I8f33e2972e599f87e25ca4ea4842402d59fc4d18
parents 812ad5cb caca26d9
Loading
Loading
Loading
Loading
+0 −24
Original line number Diff line number Diff line
@@ -1343,30 +1343,6 @@
    <integer-array name="config_autoBrightnessKeyboardBacklightValues">
    </integer-array>

    <!-- Array of light sensor lux values to define the minimum brightness curve, which guarantees
         that any curve that dips below it is rejected by the system.
         This prevents auto-brightness from setting the screen so dark as to prevent the user from
         disabling auto-brightness or reseting the brightness curve via ADB.

         The control points must be strictly increasing. Each control point corresponds to an entry
         in the minimum brightness nits array. -->
    <integer-array name="config_autoBrightnessMinimumBrightnessCurveLux">
        <item>2000</item>
        <item>4000</item>
    </integer-array>

    <!-- Array of desired screen brightness in nits corresponding to the lux values
         in the config_autoBrightnessMinimumBrightnessCurveLux array.

         This array should have size one greater than the size of the
         config_autoBrightnessMinimumBrightnessCurveLux array. The values must be non-negative and
         non-decreasing. -->
    <array name="config_autoBrightnessMinimumBrightnessCurveNits">
        <item>1.0</item>
        <item>50.0</item>
        <item>90.0</item>
    </array>

    <!-- Array of hysteresis constraint values for brightening, represented as tenths of a
         percent. The length of this array is assumed to be one greater than
         config_dynamicHysteresisLuxLevels. The brightening threshold is calculated as
+0 −2
Original line number Diff line number Diff line
@@ -1794,8 +1794,6 @@
  <java-symbol type="array" name="config_autoBrightnessKeyboardBacklightValues" />
  <java-symbol type="array" name="config_autoBrightnessLcdBacklightValues" />
  <java-symbol type="array" name="config_autoBrightnessLevels" />
  <java-symbol type="array" name="config_autoBrightnessMinimumBrightnessCurveLux" />
  <java-symbol type="array" name="config_autoBrightnessMinimumBrightnessCurveNits" />
  <java-symbol type="array" name="config_dynamicHysteresisBrightLevels" />
  <java-symbol type="array" name="config_dynamicHysteresisDarkLevels" />
  <java-symbol type="array" name="config_dynamicHysteresisLuxLevels" />
+4 −36
Original line number Diff line number Diff line
@@ -60,14 +60,8 @@ public abstract class BrightnessMappingStrategy {
        int[] backlightRange = resources.getIntArray(
                com.android.internal.R.array.config_screenBrightnessBacklight);

        float[] minimumBrightnessCurveLux = getLuxLevels(resources.getIntArray(
                com.android.internal.R.array.config_autoBrightnessMinimumBrightnessCurveLux));
        float[] minimumBrightnessCurveNits = getFloatArray(resources.obtainTypedArray(
                com.android.internal.R.array.config_autoBrightnessMinimumBrightnessCurveNits));

        if (isValidMapping(nitsRange, backlightRange)
                && isValidMapping(luxLevels, brightnessLevelsNits)
                && isValidMapping(minimumBrightnessCurveLux, minimumBrightnessCurveNits)) {
                && isValidMapping(luxLevels, brightnessLevelsNits)) {
            int minimumBacklight = resources.getInteger(
                    com.android.internal.R.integer.config_screenBrightnessSettingMinimum);
            int maximumBacklight = resources.getInteger(
@@ -79,8 +73,7 @@ public abstract class BrightnessMappingStrategy {
            }
            BrightnessConfiguration.Builder builder = new BrightnessConfiguration.Builder();
            builder.setCurve(luxLevels, brightnessLevelsNits);
            return new PhysicalMappingStrategy(builder.build(), nitsRange, backlightRange,
                    minimumBrightnessCurveLux, minimumBrightnessCurveNits);
            return new PhysicalMappingStrategy(builder.build(), nitsRange, backlightRange);
        } else if (isValidMapping(luxLevels, brightnessLevelsBacklight)) {
            return new SimpleMappingStrategy(luxLevels, brightnessLevelsBacklight);
        } else {
@@ -455,11 +448,8 @@ public abstract class BrightnessMappingStrategy {
        private float mUserLux;
        private float mUserBrightness;

        private final Spline mMinimumBrightnessCurve;

        public PhysicalMappingStrategy(BrightnessConfiguration config,
                float[] nits, int[] backlight, float[] minimumBrightnessCurveLux,
                float[] minimumBrightnessCurveNits) {
                float[] nits, int[] backlight) {
            Preconditions.checkArgument(nits.length != 0 && backlight.length != 0,
                    "Nits and backlight arrays must not be empty!");
            Preconditions.checkArgument(nits.length == backlight.length,
@@ -479,9 +469,6 @@ public abstract class BrightnessMappingStrategy {
                normalizedBacklight[i] = normalizeAbsoluteBrightness(backlight[i]);
            }

            mMinimumBrightnessCurve = Spline.createSpline(
                minimumBrightnessCurveLux, minimumBrightnessCurveNits);

            mNitsToBacklightSpline = createSpline(nits, normalizedBacklight);
            mBacklightToNitsSpline = createSpline(normalizedBacklight, nits);

@@ -497,7 +484,7 @@ public abstract class BrightnessMappingStrategy {
            if (config.equals(mConfig)) {
                return false;
            }
            validateBrightnessConfiguration(config);

            Pair<float[], float[]> curve = config.getCurve();
            mBrightnessSpline = createSpline(curve.first /*lux*/, curve.second /*nits*/);
            mConfig = config;
@@ -562,24 +549,5 @@ public abstract class BrightnessMappingStrategy {
            pw.println("  mUserLux=" + mUserLux);
            pw.println("  mUserBrightness=" + mUserBrightness);
        }

        private void validateBrightnessConfiguration(BrightnessConfiguration config) {
            Pair<float[], float[]> curve = config.getCurve();
            Spline brightnessSpline = Spline.createSpline(curve.first, curve.second);
            if (isBrightnessSplineTooDark(brightnessSpline)) {
                throw new IllegalArgumentException("brightness curve is too dark");
            }
        }

        private boolean isBrightnessSplineTooDark(Spline brightnessSpline) {
            float[] lux = mDefaultConfig.getCurve().first;
            for (int i = 0; i < lux.length; i++) {
                if (brightnessSpline.interpolate(lux[i]) <
                        mMinimumBrightnessCurve.interpolate(lux[i])) {
                    return true;
                }
            }
            return false;
        }
    }
}
+10 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.server.wm;
import android.util.ArrayMap;
import android.util.ArraySet;

import java.io.PrintWriter;
import java.util.ArrayList;

/**
@@ -88,4 +89,13 @@ class AnimatingAppWindowTokenRegistry {
        }
        mTmpRunnableList.clear();
    }

    void dump(PrintWriter pw, String header, String prefix) {
        if (!mAnimatingTokens.isEmpty() || !mFinishedTokens.isEmpty()) {
            pw.print(prefix); pw.println(header);
            prefix = prefix + "  ";
            pw.print(prefix); pw.print("mAnimatingTokens="); pw.println(mAnimatingTokens);
            pw.print(prefix); pw.print("mFinishedTokens="); pw.println(mFinishedTokens);
        }
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -134,11 +134,18 @@ class RemoteAnimationController {
    private RemoteAnimationTarget[] createAnimations() {
        final ArrayList<RemoteAnimationTarget> targets = new ArrayList<>();
        for (int i = mPendingAnimations.size() - 1; i >= 0; i--) {
            final RemoteAnimationAdapterWrapper wrapper = mPendingAnimations.get(i);
            final RemoteAnimationTarget target =
                    mPendingAnimations.get(i).createRemoteAppAnimation();
            if (target != null) {
                targets.add(target);
            } else {

                // We can't really start an animation but we still need to make sure to finish the
                // pending animation that was started by SurfaceAnimator
                if (wrapper.mCapturedFinishCallback != null) {
                    wrapper.mCapturedFinishCallback.onAnimationFinished(wrapper);
                }
                mPendingAnimations.remove(i);
            }
        }
Loading