diff options
| author | 2024-01-24 18:50:57 +0000 | |
|---|---|---|
| committer | 2024-01-24 18:50:57 +0000 | |
| commit | 9b26927bd9e9aa03317105bde3a9aba735ecaad2 (patch) | |
| tree | e3307c64f772908beb6a20809a3d0e33ee5a930b | |
| parent | 601f608c2e52d9e3f671c0cf66ee59c5d8a608b9 (diff) | |
| parent | c04d218ef175eae2229246e75bd8b18e6343b181 (diff) | |
Merge "Fix wallpaper dim logic" into main
| -rw-r--r-- | core/java/android/service/wallpaper/WallpaperService.java | 37 |
1 files changed, 13 insertions, 24 deletions
diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index 76e0c259b38f..bbda0684f1d8 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -271,7 +271,6 @@ public abstract class WallpaperService extends Service { boolean mDrawingAllowed; boolean mOffsetsChanged; boolean mFixedSizeAllowed; - boolean mShouldDim; // Whether the wallpaper should be dimmed by default (when no additional dimming is applied) // based on its color hints boolean mShouldDimByDefault; @@ -348,9 +347,11 @@ public abstract class WallpaperService extends Service { private Display mDisplay; private Context mDisplayContext; private int mDisplayState; - private float mWallpaperDimAmount = 0.05f; + + private float mCustomDimAmount = 0f; + private float mWallpaperDimAmount = 0f; private float mPreviousWallpaperDimAmount = mWallpaperDimAmount; - private float mDefaultDimAmount = mWallpaperDimAmount; + private float mDefaultDimAmount = 0.05f; SurfaceControl mSurfaceControl = new SurfaceControl(); SurfaceControl mBbqSurfaceControl; @@ -986,11 +987,8 @@ public abstract class WallpaperService extends Service { mShouldDimByDefault = ((colorHints & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) == 0 && (colorHints & WallpaperColors.HINT_SUPPORTS_DARK_THEME) == 0); - // If default dimming value changes and no additional dimming is applied - if (mShouldDimByDefault != mShouldDim && mWallpaperDimAmount == 0f) { - mShouldDim = mShouldDimByDefault; - updateSurfaceDimming(); - } + // Recompute dim in case it changed compared to the previous WallpaperService + updateWallpaperDimming(mCustomDimAmount); } /** @@ -999,28 +997,21 @@ public abstract class WallpaperService extends Service { * @param dimAmount Float amount between [0.0, 1.0] to dim the wallpaper. */ private void updateWallpaperDimming(float dimAmount) { - if (dimAmount == mWallpaperDimAmount) { - return; - } + mCustomDimAmount = Math.min(1f, dimAmount); - // Custom dim amount cannot be less than the default dim amount. - mWallpaperDimAmount = Math.max(mDefaultDimAmount, dimAmount); - // If dim amount is 0f (additional dimming is removed), then the wallpaper should dim - // based on its default wallpaper color hints. - mShouldDim = dimAmount != 0f || mShouldDimByDefault; - updateSurfaceDimming(); - } + // If default dim is enabled, the actual dim amount is at least the default dim amount + mWallpaperDimAmount = (!mShouldDimByDefault) ? mCustomDimAmount + : Math.max(mDefaultDimAmount, mCustomDimAmount); - private void updateSurfaceDimming() { - if (!ENABLE_WALLPAPER_DIMMING || mBbqSurfaceControl == null) { + if (!ENABLE_WALLPAPER_DIMMING || mBbqSurfaceControl == null + || mWallpaperDimAmount == mPreviousWallpaperDimAmount) { return; } SurfaceControl.Transaction surfaceControlTransaction = new SurfaceControl.Transaction(); // TODO: apply the dimming to preview as well once surface transparency works in // preview mode. - if ((!isPreview() && mShouldDim) - || mPreviousWallpaperDimAmount != mWallpaperDimAmount) { + if (!isPreview()) { Log.v(TAG, "Setting wallpaper dimming: " + mWallpaperDimAmount); // Animate dimming to gradually change the wallpaper alpha from the previous @@ -1545,8 +1536,6 @@ public abstract class WallpaperService extends Service { .createWindowContext(TYPE_WALLPAPER, null /* options */); mDefaultDimAmount = mDisplayContext.getResources().getFloat( com.android.internal.R.dimen.config_wallpaperDimAmount); - mWallpaperDimAmount = mDefaultDimAmount; - mPreviousWallpaperDimAmount = mWallpaperDimAmount; mDisplayState = mDisplay.getCommittedState(); mMergedConfiguration.setOverrideConfiguration( mDisplayContext.getResources().getConfiguration()); |