From 0f00c3526879a047b1e2024048010618c225f36b Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Tue, 29 Jun 2021 13:02:12 -0700 Subject: [PATCH] Decouple zooms and blurs on app launch We'd like to be able to disable blurs during app launch, but without disabling zooms as well. The previous sysprop would set the depth of BackgroundAppState to 0, when what we want is to conserve wallpaper zoom. Bug: 191969790 Test: adb shell setprop ro.launcher.blur.appLaunch false Change-Id: Ie4b26096f6ac723c3981bba2829557e6cc6c733b --- .../launcher3/QuickstepTransitionManager.java | 9 ++++++--- .../statehandlers/DepthController.java | 20 ++++++++++++++++++- .../states/BackgroundAppState.java | 4 +--- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java index ae7e4771eb..310e178955 100644 --- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java @@ -981,11 +981,14 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener depthController.setSurface(dimLayer); backgroundRadiusAnim.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + depthController.setIsInLaunchTransition(true); + } + @Override public void onAnimationEnd(Animator animation) { - // Reset depth at the end of the launch animation, so the wallpaper won't be - // zoomed out if an app crashes. - DEPTH.setValue(depthController, 0f); + depthController.setIsInLaunchTransition(false); depthController.setSurface(null); if (dimLayer != null) { new SurfaceControl.Transaction() diff --git a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java index 4503e308e6..bb8b62db71 100644 --- a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java +++ b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java @@ -24,6 +24,7 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.os.IBinder; +import android.os.SystemProperties; import android.util.FloatProperty; import android.view.CrossWindowBlurListeners; import android.view.SurfaceControl; @@ -117,6 +118,10 @@ public class DepthController implements StateHandler, * @see android.service.wallpaper.WallpaperService.Engine#onZoomChanged(float) */ private float mDepth; + /** + * If we're launching and app and should not be blurring the screen for performance reasons. + */ + private boolean mBlurDisabledForAppLaunch; // Workaround for animating the depth when multiwindow mode changes. private boolean mIgnoreStateChangesDuringMultiWindowAnimation = false; @@ -211,6 +216,19 @@ public class DepthController implements StateHandler, } } + /** + * If we're launching an app from the home screen. + */ + public void setIsInLaunchTransition(boolean inLaunchTransition) { + boolean blurEnabled = SystemProperties.getBoolean("ro.launcher.blur.appLaunch", true); + mBlurDisabledForAppLaunch = inLaunchTransition && !blurEnabled; + if (!inLaunchTransition) { + // Reset depth at the end of the launch animation, so the wallpaper won't be + // zoomed out if an app crashes. + setDepth(0f); + } + } + private void setDepth(float depth) { depth = Utilities.boundToRange(depth, 0, 1); // Round out the depth to dedupe frequent, non-perceptable updates @@ -238,7 +256,7 @@ public class DepthController implements StateHandler, boolean opaque = mLauncher.getScrimView().isFullyOpaque() && !isOverview; int blur = opaque || isOverview || !mCrossWindowBlursEnabled - ? 0 : (int) (mDepth * mMaxBlurRadius); + || mBlurDisabledForAppLaunch ? 0 : (int) (mDepth * mMaxBlurRadius); new SurfaceControl.Transaction() .setBackgroundBlurRadius(mSurface, blur) .setOpaque(mSurface, opaque) diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java index 01c9e765a8..fe5a3475ff 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java @@ -19,7 +19,6 @@ import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKG import android.content.Context; import android.graphics.Color; -import android.os.SystemProperties; import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.DeviceProfile; @@ -85,8 +84,7 @@ public class BackgroundAppState extends OverviewState { @Override protected float getDepthUnchecked(Context context) { - //TODO revert when b/178661709 is fixed - return SystemProperties.getBoolean("ro.launcher.depth.appLaunch", true) ? 1 : 0; + return 1; } @Override