diff options
| author | 2023-10-23 11:00:29 +0000 | |
|---|---|---|
| committer | 2023-10-23 14:35:52 +0000 | |
| commit | 18d4bdf7c057677cce3a977bc83f9e5de0752ffd (patch) | |
| tree | ac13d513bf6a972a10699e9b2b72ab21d8cb118c | |
| parent | 90feea4d8bd570af8141c9563c899847934a5c5b (diff) | |
Replace Suppliers for Boolean, Int and Float
Using specific suppliers instead of generic
Supplier<T> allows to avoid Java boxing/unboxing
operation for wrapper/primitive types.
Fix: 304225779
Test: atest WmTests:LetterboxTest
Change-Id: I096b478e07212b28b37db6628652a31adbd80359
| -rw-r--r-- | services/core/java/com/android/server/wm/Letterbox.java | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/services/core/java/com/android/server/wm/Letterbox.java b/services/core/java/com/android/server/wm/Letterbox.java index f9fa9e6d4a7b..f6aad4c86220 100644 --- a/services/core/java/com/android/server/wm/Letterbox.java +++ b/services/core/java/com/android/server/wm/Letterbox.java @@ -36,7 +36,10 @@ import android.view.WindowManager; import com.android.server.UiThread; +import java.util.function.BooleanSupplier; +import java.util.function.DoubleSupplier; import java.util.function.IntConsumer; +import java.util.function.IntSupplier; import java.util.function.Supplier; /** @@ -50,12 +53,12 @@ public class Letterbox { private final Supplier<SurfaceControl.Builder> mSurfaceControlFactory; private final Supplier<SurfaceControl.Transaction> mTransactionFactory; - private final Supplier<Boolean> mAreCornersRounded; + private final BooleanSupplier mAreCornersRounded; private final Supplier<Color> mColorSupplier; // Parameters for "blurred wallpaper" letterbox background. - private final Supplier<Boolean> mHasWallpaperBackgroundSupplier; - private final Supplier<Integer> mBlurRadiusSupplier; - private final Supplier<Float> mDarkScrimAlphaSupplier; + private final BooleanSupplier mHasWallpaperBackgroundSupplier; + private final IntSupplier mBlurRadiusSupplier; + private final DoubleSupplier mDarkScrimAlphaSupplier; private final Supplier<SurfaceControl> mParentSurfaceSupplier; private final Rect mOuter = new Rect(); @@ -82,11 +85,11 @@ public class Letterbox { */ public Letterbox(Supplier<SurfaceControl.Builder> surfaceControlFactory, Supplier<SurfaceControl.Transaction> transactionFactory, - Supplier<Boolean> areCornersRounded, + BooleanSupplier areCornersRounded, Supplier<Color> colorSupplier, - Supplier<Boolean> hasWallpaperBackgroundSupplier, - Supplier<Integer> blurRadiusSupplier, - Supplier<Float> darkScrimAlphaSupplier, + BooleanSupplier hasWallpaperBackgroundSupplier, + IntSupplier blurRadiusSupplier, + DoubleSupplier darkScrimAlphaSupplier, IntConsumer doubleTapCallbackX, IntConsumer doubleTapCallbackY, Supplier<SurfaceControl> parentSurface) { @@ -247,7 +250,7 @@ public class Letterbox { * Returns {@code true} when using {@link #mFullWindowSurface} instead of {@link mSurfaces}. */ private boolean useFullWindowSurface() { - return mAreCornersRounded.get() || mHasWallpaperBackgroundSupplier.get(); + return mAreCornersRounded.getAsBoolean() || mHasWallpaperBackgroundSupplier.getAsBoolean(); } private final class TapEventReceiver extends InputEventReceiver { @@ -424,7 +427,7 @@ public class Letterbox { mSurfaceFrameRelative.height()); t.reparent(mSurface, mParentSurface); - mHasWallpaperBackground = mHasWallpaperBackgroundSupplier.get(); + mHasWallpaperBackground = mHasWallpaperBackgroundSupplier.getAsBoolean(); updateAlphaAndBlur(t); t.show(mSurface); @@ -445,17 +448,17 @@ public class Letterbox { t.setBackgroundBlurRadius(mSurface, 0); return; } - final float alpha = mDarkScrimAlphaSupplier.get(); + final float alpha = (float) mDarkScrimAlphaSupplier.getAsDouble(); t.setAlpha(mSurface, alpha); // Translucent dark scrim can be shown without blur. - if (mBlurRadiusSupplier.get() <= 0) { + if (mBlurRadiusSupplier.getAsInt() <= 0) { // Removing pre-exesting blur t.setBackgroundBlurRadius(mSurface, 0); return; } - t.setBackgroundBlurRadius(mSurface, mBlurRadiusSupplier.get()); + t.setBackgroundBlurRadius(mSurface, mBlurRadiusSupplier.getAsInt()); } private float[] getRgbColorArray() { @@ -472,7 +475,7 @@ public class Letterbox { // and mParentSurface may never be updated in applySurfaceChanges but this // doesn't mean that update is needed. || !mSurfaceFrameRelative.isEmpty() - && (mHasWallpaperBackgroundSupplier.get() != mHasWallpaperBackground + && (mHasWallpaperBackgroundSupplier.getAsBoolean() != mHasWallpaperBackground || !mColorSupplier.get().equals(mColor) || mParentSurfaceSupplier.get() != mParentSurface); } |