Loading services/core/java/com/android/server/wm/Letterbox.java +17 −14 Original line number Diff line number Diff line Loading @@ -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; /** Loading @@ -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(); Loading @@ -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) { Loading Loading @@ -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 { Loading Loading @@ -424,7 +427,7 @@ public class Letterbox { mSurfaceFrameRelative.height()); t.reparent(mSurface, mParentSurface); mHasWallpaperBackground = mHasWallpaperBackgroundSupplier.get(); mHasWallpaperBackground = mHasWallpaperBackgroundSupplier.getAsBoolean(); updateAlphaAndBlur(t); t.show(mSurface); Loading @@ -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() { Loading @@ -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); } Loading Loading
services/core/java/com/android/server/wm/Letterbox.java +17 −14 Original line number Diff line number Diff line Loading @@ -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; /** Loading @@ -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(); Loading @@ -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) { Loading Loading @@ -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 { Loading Loading @@ -424,7 +427,7 @@ public class Letterbox { mSurfaceFrameRelative.height()); t.reparent(mSurface, mParentSurface); mHasWallpaperBackground = mHasWallpaperBackgroundSupplier.get(); mHasWallpaperBackground = mHasWallpaperBackgroundSupplier.getAsBoolean(); updateAlphaAndBlur(t); t.show(mSurface); Loading @@ -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() { Loading @@ -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); } Loading