Loading core/java/android/widget/RemoteViews.java +19 −1 Original line number Diff line number Diff line Loading @@ -300,6 +300,13 @@ public class RemoteViews implements Parcelable, Filter { */ public static final int FLAG_USE_LIGHT_BACKGROUND_LAYOUT = 4; /** * A ReadWriteHelper which has the same behavior as ReadWriteHelper.DEFAULT, but which is * intentionally a different instance in order to trick Bundle reader so that it doesn't allow * lazy initialization. */ private static final Parcel.ReadWriteHelper ALTERNATIVE_DEFAULT = new Parcel.ReadWriteHelper(); /** * Used to restrict the views which can be inflated * Loading Loading @@ -1856,7 +1863,18 @@ public class RemoteViews implements Parcelable, Filter { this.value = in.readTypedObject(Bitmap.CREATOR); break; case BUNDLE: // Because we use Parcel.allowSquashing() when writing, and that affects // how the contents of Bundles are written, we need to ensure the bundle is // unparceled immediately, not lazily. Setting a custom ReadWriteHelper // just happens to have that effect on Bundle.readFromParcel(). // TODO(b/212731590): build this state tracking into Bundle if (in.hasReadWriteHelper()) { this.value = in.readBundle(); } else { in.setReadWriteHelper(ALTERNATIVE_DEFAULT); this.value = in.readBundle(); in.setReadWriteHelper(null); } break; case INTENT: this.value = in.readTypedObject(Intent.CREATOR); Loading media/packages/BluetoothMidiService/AndroidManifest.xml +1 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ xmlns:tools="http://schemas.android.com/tools" package="com.android.bluetoothmidiservice" > <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" /> <uses-sdk android:minSdkVersion="30" android:targetSdkVersion="30" /> <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/> Loading media/packages/BluetoothMidiService/AndroidManifestBase.xml +1 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.bluetoothmidiservice" > <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" /> <uses-sdk android:minSdkVersion="30" android:targetSdkVersion="30" /> <application android:label="BluetoothMidi" android:defaultToDeviceProtectedStorage="true" Loading packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationTargetCompat.java +3 −1 Original line number Diff line number Diff line Loading @@ -278,7 +278,9 @@ public class RemoteAnimationTargetCompat { * @see SurfaceControl#release() */ public void release() { if (leash.mSurfaceControl != null) { leash.mSurfaceControl.release(); } if (mStartLeash != null) { mStartLeash.release(); } Loading services/core/java/com/android/server/display/DisplayPowerController.java +82 −35 Original line number Diff line number Diff line Loading @@ -50,6 +50,8 @@ import android.os.UserHandle; import android.provider.Settings; import android.util.Log; import android.util.MathUtils; import android.util.MutableFloat; import android.util.MutableInt; import android.util.Slog; import android.util.TimeUtils; import android.view.Display; Loading Loading @@ -1323,6 +1325,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Animate the screen brightness when the screen is on or dozing. // Skip the animation when the screen is off or suspended or transition to/from VR. boolean brightnessAdjusted = false; if (!mPendingScreenOff) { if (mSkipScreenOnBrightnessRamp) { if (state == Display.STATE_ON) { Loading Loading @@ -1410,15 +1413,19 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // slider event so notify as if the system changed the brightness. userInitiatedChange = false; } notifyBrightnessChanged(brightnessState, userInitiatedChange, notifyBrightnessTrackerChanged(brightnessState, userInitiatedChange, hadUserBrightnessPoint); } // We save the brightness info *after* the brightness setting has been changed and // adjustments made so that the brightness info reflects the latest value. saveBrightnessInfo(getScreenBrightnessSetting(), animateValue); brightnessAdjusted = saveBrightnessInfo(getScreenBrightnessSetting(), animateValue); } else { saveBrightnessInfo(getScreenBrightnessSetting()); brightnessAdjusted = saveBrightnessInfo(getScreenBrightnessSetting()); } if (brightnessAdjusted) { postBrightnessChangeRunnable(); } // Log any changes to what is currently driving the brightness setting. Loading Loading @@ -1534,29 +1541,48 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call public BrightnessInfo getBrightnessInfo() { synchronized (mCachedBrightnessInfo) { return new BrightnessInfo( mCachedBrightnessInfo.brightness, mCachedBrightnessInfo.adjustedBrightness, mCachedBrightnessInfo.brightnessMin, mCachedBrightnessInfo.brightnessMax, mCachedBrightnessInfo.hbmMode, mCachedBrightnessInfo.highBrightnessTransitionPoint); mCachedBrightnessInfo.brightness.value, mCachedBrightnessInfo.adjustedBrightness.value, mCachedBrightnessInfo.brightnessMin.value, mCachedBrightnessInfo.brightnessMax.value, mCachedBrightnessInfo.hbmMode.value, mCachedBrightnessInfo.hbmTransitionPoint.value); } } private void saveBrightnessInfo(float brightness) { saveBrightnessInfo(brightness, brightness); private boolean saveBrightnessInfo(float brightness) { return saveBrightnessInfo(brightness, brightness); } private void saveBrightnessInfo(float brightness, float adjustedBrightness) { private boolean saveBrightnessInfo(float brightness, float adjustedBrightness) { synchronized (mCachedBrightnessInfo) { mCachedBrightnessInfo.brightness = brightness; mCachedBrightnessInfo.adjustedBrightness = adjustedBrightness; mCachedBrightnessInfo.brightnessMin = mHbmController.getCurrentBrightnessMin(); mCachedBrightnessInfo.brightnessMax = mHbmController.getCurrentBrightnessMax(); mCachedBrightnessInfo.hbmMode = mHbmController.getHighBrightnessMode(); mCachedBrightnessInfo.highBrightnessTransitionPoint = mHbmController.getTransitionPoint(); } boolean changed = false; changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightness, brightness); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.adjustedBrightness, adjustedBrightness); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightnessMin, mHbmController.getCurrentBrightnessMin()); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightnessMax, mHbmController.getCurrentBrightnessMax()); changed |= mCachedBrightnessInfo.checkAndSetInt(mCachedBrightnessInfo.hbmMode, mHbmController.getHighBrightnessMode()); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.hbmTransitionPoint, mHbmController.getTransitionPoint()); return changed; } } void postBrightnessChangeRunnable() { mHandler.post(mOnBrightnessChangeRunnable); } private HighBrightnessModeController createHbmControllerLocked() { Loading @@ -1571,7 +1597,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX, hbmData, () -> { sendUpdatePowerStateLocked(); mHandler.post(mOnBrightnessChangeRunnable); postBrightnessChangeRunnable(); // TODO(b/192258832): Switch the HBMChangeCallback to a listener pattern. if (mAutomaticBrightnessController != null) { mAutomaticBrightnessController.update(); Loading Loading @@ -2073,7 +2099,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call private void setCurrentScreenBrightness(float brightnessValue) { if (brightnessValue != mCurrentScreenBrightnessSetting) { mCurrentScreenBrightnessSetting = brightnessValue; mHandler.post(mOnBrightnessChangeRunnable); postBrightnessChangeRunnable(); } } Loading Loading @@ -2125,7 +2151,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call return true; } private void notifyBrightnessChanged(float brightness, boolean userInitiated, private void notifyBrightnessTrackerChanged(float brightness, boolean userInitiated, boolean hadUserDataPoint) { final float brightnessInNits = convertToNits(brightness); if (mPowerRequest.useAutoBrightness && brightnessInNits >= 0.0f Loading Loading @@ -2236,16 +2262,17 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call pw.println(" mColorFadeFadesConfig=" + mColorFadeFadesConfig); pw.println(" mColorFadeEnabled=" + mColorFadeEnabled); synchronized (mCachedBrightnessInfo) { pw.println(" mCachedBrightnessInfo.brightness=" + mCachedBrightnessInfo.brightness); pw.println(" mCachedBrightnessInfo.brightness=" + mCachedBrightnessInfo.brightness.value); pw.println(" mCachedBrightnessInfo.adjustedBrightness=" + mCachedBrightnessInfo.adjustedBrightness); mCachedBrightnessInfo.adjustedBrightness.value); pw.println(" mCachedBrightnessInfo.brightnessMin=" + mCachedBrightnessInfo.brightnessMin); mCachedBrightnessInfo.brightnessMin.value); pw.println(" mCachedBrightnessInfo.brightnessMax=" + mCachedBrightnessInfo.brightnessMax); pw.println(" mCachedBrightnessInfo.hbmMode=" + mCachedBrightnessInfo.hbmMode); pw.println(" mCachedBrightnessInfo.highBrightnessTransitionPoint=" + mCachedBrightnessInfo.highBrightnessTransitionPoint); mCachedBrightnessInfo.brightnessMax.value); pw.println(" mCachedBrightnessInfo.hbmMode=" + mCachedBrightnessInfo.hbmMode.value); pw.println(" mCachedBrightnessInfo.hbmTransitionPoint=" + mCachedBrightnessInfo.hbmTransitionPoint.value); } pw.println(" mDisplayBlanksAfterDozeConfig=" + mDisplayBlanksAfterDozeConfig); pw.println(" mBrightnessBucketsInDozeConfig=" + mBrightnessBucketsInDozeConfig); Loading Loading @@ -2663,11 +2690,31 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } static class CachedBrightnessInfo { public float brightness; public float adjustedBrightness; public float brightnessMin; public float brightnessMax; public int hbmMode; public float highBrightnessTransitionPoint; public MutableFloat brightness = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableFloat adjustedBrightness = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableFloat brightnessMin = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableFloat brightnessMax = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableInt hbmMode = new MutableInt(BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF); public MutableFloat hbmTransitionPoint = new MutableFloat(HighBrightnessModeController.HBM_TRANSITION_POINT_INVALID); public boolean checkAndSetFloat(MutableFloat mf, float f) { if (mf.value != f) { mf.value = f; return true; } return false; } public boolean checkAndSetInt(MutableInt mi, int i) { if (mi.value != i) { mi.value = i; return true; } return false; } } } Loading
core/java/android/widget/RemoteViews.java +19 −1 Original line number Diff line number Diff line Loading @@ -300,6 +300,13 @@ public class RemoteViews implements Parcelable, Filter { */ public static final int FLAG_USE_LIGHT_BACKGROUND_LAYOUT = 4; /** * A ReadWriteHelper which has the same behavior as ReadWriteHelper.DEFAULT, but which is * intentionally a different instance in order to trick Bundle reader so that it doesn't allow * lazy initialization. */ private static final Parcel.ReadWriteHelper ALTERNATIVE_DEFAULT = new Parcel.ReadWriteHelper(); /** * Used to restrict the views which can be inflated * Loading Loading @@ -1856,7 +1863,18 @@ public class RemoteViews implements Parcelable, Filter { this.value = in.readTypedObject(Bitmap.CREATOR); break; case BUNDLE: // Because we use Parcel.allowSquashing() when writing, and that affects // how the contents of Bundles are written, we need to ensure the bundle is // unparceled immediately, not lazily. Setting a custom ReadWriteHelper // just happens to have that effect on Bundle.readFromParcel(). // TODO(b/212731590): build this state tracking into Bundle if (in.hasReadWriteHelper()) { this.value = in.readBundle(); } else { in.setReadWriteHelper(ALTERNATIVE_DEFAULT); this.value = in.readBundle(); in.setReadWriteHelper(null); } break; case INTENT: this.value = in.readTypedObject(Intent.CREATOR); Loading
media/packages/BluetoothMidiService/AndroidManifest.xml +1 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ xmlns:tools="http://schemas.android.com/tools" package="com.android.bluetoothmidiservice" > <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" /> <uses-sdk android:minSdkVersion="30" android:targetSdkVersion="30" /> <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/> Loading
media/packages/BluetoothMidiService/AndroidManifestBase.xml +1 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.bluetoothmidiservice" > <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" /> <uses-sdk android:minSdkVersion="30" android:targetSdkVersion="30" /> <application android:label="BluetoothMidi" android:defaultToDeviceProtectedStorage="true" Loading
packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationTargetCompat.java +3 −1 Original line number Diff line number Diff line Loading @@ -278,7 +278,9 @@ public class RemoteAnimationTargetCompat { * @see SurfaceControl#release() */ public void release() { if (leash.mSurfaceControl != null) { leash.mSurfaceControl.release(); } if (mStartLeash != null) { mStartLeash.release(); } Loading
services/core/java/com/android/server/display/DisplayPowerController.java +82 −35 Original line number Diff line number Diff line Loading @@ -50,6 +50,8 @@ import android.os.UserHandle; import android.provider.Settings; import android.util.Log; import android.util.MathUtils; import android.util.MutableFloat; import android.util.MutableInt; import android.util.Slog; import android.util.TimeUtils; import android.view.Display; Loading Loading @@ -1323,6 +1325,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Animate the screen brightness when the screen is on or dozing. // Skip the animation when the screen is off or suspended or transition to/from VR. boolean brightnessAdjusted = false; if (!mPendingScreenOff) { if (mSkipScreenOnBrightnessRamp) { if (state == Display.STATE_ON) { Loading Loading @@ -1410,15 +1413,19 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // slider event so notify as if the system changed the brightness. userInitiatedChange = false; } notifyBrightnessChanged(brightnessState, userInitiatedChange, notifyBrightnessTrackerChanged(brightnessState, userInitiatedChange, hadUserBrightnessPoint); } // We save the brightness info *after* the brightness setting has been changed and // adjustments made so that the brightness info reflects the latest value. saveBrightnessInfo(getScreenBrightnessSetting(), animateValue); brightnessAdjusted = saveBrightnessInfo(getScreenBrightnessSetting(), animateValue); } else { saveBrightnessInfo(getScreenBrightnessSetting()); brightnessAdjusted = saveBrightnessInfo(getScreenBrightnessSetting()); } if (brightnessAdjusted) { postBrightnessChangeRunnable(); } // Log any changes to what is currently driving the brightness setting. Loading Loading @@ -1534,29 +1541,48 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call public BrightnessInfo getBrightnessInfo() { synchronized (mCachedBrightnessInfo) { return new BrightnessInfo( mCachedBrightnessInfo.brightness, mCachedBrightnessInfo.adjustedBrightness, mCachedBrightnessInfo.brightnessMin, mCachedBrightnessInfo.brightnessMax, mCachedBrightnessInfo.hbmMode, mCachedBrightnessInfo.highBrightnessTransitionPoint); mCachedBrightnessInfo.brightness.value, mCachedBrightnessInfo.adjustedBrightness.value, mCachedBrightnessInfo.brightnessMin.value, mCachedBrightnessInfo.brightnessMax.value, mCachedBrightnessInfo.hbmMode.value, mCachedBrightnessInfo.hbmTransitionPoint.value); } } private void saveBrightnessInfo(float brightness) { saveBrightnessInfo(brightness, brightness); private boolean saveBrightnessInfo(float brightness) { return saveBrightnessInfo(brightness, brightness); } private void saveBrightnessInfo(float brightness, float adjustedBrightness) { private boolean saveBrightnessInfo(float brightness, float adjustedBrightness) { synchronized (mCachedBrightnessInfo) { mCachedBrightnessInfo.brightness = brightness; mCachedBrightnessInfo.adjustedBrightness = adjustedBrightness; mCachedBrightnessInfo.brightnessMin = mHbmController.getCurrentBrightnessMin(); mCachedBrightnessInfo.brightnessMax = mHbmController.getCurrentBrightnessMax(); mCachedBrightnessInfo.hbmMode = mHbmController.getHighBrightnessMode(); mCachedBrightnessInfo.highBrightnessTransitionPoint = mHbmController.getTransitionPoint(); } boolean changed = false; changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightness, brightness); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.adjustedBrightness, adjustedBrightness); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightnessMin, mHbmController.getCurrentBrightnessMin()); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightnessMax, mHbmController.getCurrentBrightnessMax()); changed |= mCachedBrightnessInfo.checkAndSetInt(mCachedBrightnessInfo.hbmMode, mHbmController.getHighBrightnessMode()); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.hbmTransitionPoint, mHbmController.getTransitionPoint()); return changed; } } void postBrightnessChangeRunnable() { mHandler.post(mOnBrightnessChangeRunnable); } private HighBrightnessModeController createHbmControllerLocked() { Loading @@ -1571,7 +1597,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX, hbmData, () -> { sendUpdatePowerStateLocked(); mHandler.post(mOnBrightnessChangeRunnable); postBrightnessChangeRunnable(); // TODO(b/192258832): Switch the HBMChangeCallback to a listener pattern. if (mAutomaticBrightnessController != null) { mAutomaticBrightnessController.update(); Loading Loading @@ -2073,7 +2099,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call private void setCurrentScreenBrightness(float brightnessValue) { if (brightnessValue != mCurrentScreenBrightnessSetting) { mCurrentScreenBrightnessSetting = brightnessValue; mHandler.post(mOnBrightnessChangeRunnable); postBrightnessChangeRunnable(); } } Loading Loading @@ -2125,7 +2151,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call return true; } private void notifyBrightnessChanged(float brightness, boolean userInitiated, private void notifyBrightnessTrackerChanged(float brightness, boolean userInitiated, boolean hadUserDataPoint) { final float brightnessInNits = convertToNits(brightness); if (mPowerRequest.useAutoBrightness && brightnessInNits >= 0.0f Loading Loading @@ -2236,16 +2262,17 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call pw.println(" mColorFadeFadesConfig=" + mColorFadeFadesConfig); pw.println(" mColorFadeEnabled=" + mColorFadeEnabled); synchronized (mCachedBrightnessInfo) { pw.println(" mCachedBrightnessInfo.brightness=" + mCachedBrightnessInfo.brightness); pw.println(" mCachedBrightnessInfo.brightness=" + mCachedBrightnessInfo.brightness.value); pw.println(" mCachedBrightnessInfo.adjustedBrightness=" + mCachedBrightnessInfo.adjustedBrightness); mCachedBrightnessInfo.adjustedBrightness.value); pw.println(" mCachedBrightnessInfo.brightnessMin=" + mCachedBrightnessInfo.brightnessMin); mCachedBrightnessInfo.brightnessMin.value); pw.println(" mCachedBrightnessInfo.brightnessMax=" + mCachedBrightnessInfo.brightnessMax); pw.println(" mCachedBrightnessInfo.hbmMode=" + mCachedBrightnessInfo.hbmMode); pw.println(" mCachedBrightnessInfo.highBrightnessTransitionPoint=" + mCachedBrightnessInfo.highBrightnessTransitionPoint); mCachedBrightnessInfo.brightnessMax.value); pw.println(" mCachedBrightnessInfo.hbmMode=" + mCachedBrightnessInfo.hbmMode.value); pw.println(" mCachedBrightnessInfo.hbmTransitionPoint=" + mCachedBrightnessInfo.hbmTransitionPoint.value); } pw.println(" mDisplayBlanksAfterDozeConfig=" + mDisplayBlanksAfterDozeConfig); pw.println(" mBrightnessBucketsInDozeConfig=" + mBrightnessBucketsInDozeConfig); Loading Loading @@ -2663,11 +2690,31 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } static class CachedBrightnessInfo { public float brightness; public float adjustedBrightness; public float brightnessMin; public float brightnessMax; public int hbmMode; public float highBrightnessTransitionPoint; public MutableFloat brightness = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableFloat adjustedBrightness = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableFloat brightnessMin = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableFloat brightnessMax = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableInt hbmMode = new MutableInt(BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF); public MutableFloat hbmTransitionPoint = new MutableFloat(HighBrightnessModeController.HBM_TRANSITION_POINT_INVALID); public boolean checkAndSetFloat(MutableFloat mf, float f) { if (mf.value != f) { mf.value = f; return true; } return false; } public boolean checkAndSetInt(MutableInt mi, int i) { if (mi.value != i) { mi.value = i; return true; } return false; } } }