Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f00c352 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

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
parent 48ec126d
Loading
Loading
Loading
Loading
+6 −3
Original line number Original line Diff line number Diff line
@@ -981,11 +981,14 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener


            depthController.setSurface(dimLayer);
            depthController.setSurface(dimLayer);
            backgroundRadiusAnim.addListener(new AnimatorListenerAdapter() {
            backgroundRadiusAnim.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationStart(Animator animation) {
                    depthController.setIsInLaunchTransition(true);
                }

                @Override
                @Override
                public void onAnimationEnd(Animator animation) {
                public void onAnimationEnd(Animator animation) {
                    // Reset depth at the end of the launch animation, so the wallpaper won't be
                    depthController.setIsInLaunchTransition(false);
                    // zoomed out if an app crashes.
                    DEPTH.setValue(depthController, 0f);
                    depthController.setSurface(null);
                    depthController.setSurface(null);
                    if (dimLayer != null) {
                    if (dimLayer != null) {
                        new SurfaceControl.Transaction()
                        new SurfaceControl.Transaction()
+19 −1
Original line number Original line Diff line number Diff line
@@ -24,6 +24,7 @@ import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.ObjectAnimator;
import android.os.IBinder;
import android.os.IBinder;
import android.os.SystemProperties;
import android.util.FloatProperty;
import android.util.FloatProperty;
import android.view.CrossWindowBlurListeners;
import android.view.CrossWindowBlurListeners;
import android.view.SurfaceControl;
import android.view.SurfaceControl;
@@ -117,6 +118,10 @@ public class DepthController implements StateHandler<LauncherState>,
     * @see android.service.wallpaper.WallpaperService.Engine#onZoomChanged(float)
     * @see android.service.wallpaper.WallpaperService.Engine#onZoomChanged(float)
     */
     */
    private float mDepth;
    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.
    // Workaround for animating the depth when multiwindow mode changes.
    private boolean mIgnoreStateChangesDuringMultiWindowAnimation = false;
    private boolean mIgnoreStateChangesDuringMultiWindowAnimation = false;
@@ -211,6 +216,19 @@ public class DepthController implements StateHandler<LauncherState>,
        }
        }
    }
    }


    /**
     * 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) {
    private void setDepth(float depth) {
        depth = Utilities.boundToRange(depth, 0, 1);
        depth = Utilities.boundToRange(depth, 0, 1);
        // Round out the depth to dedupe frequent, non-perceptable updates
        // Round out the depth to dedupe frequent, non-perceptable updates
@@ -238,7 +256,7 @@ public class DepthController implements StateHandler<LauncherState>,
            boolean opaque = mLauncher.getScrimView().isFullyOpaque() && !isOverview;
            boolean opaque = mLauncher.getScrimView().isFullyOpaque() && !isOverview;


            int blur = opaque || isOverview || !mCrossWindowBlursEnabled
            int blur = opaque || isOverview || !mCrossWindowBlursEnabled
                    ? 0 : (int) (mDepth * mMaxBlurRadius);
                    || mBlurDisabledForAppLaunch ? 0 : (int) (mDepth * mMaxBlurRadius);
            new SurfaceControl.Transaction()
            new SurfaceControl.Transaction()
                    .setBackgroundBlurRadius(mSurface, blur)
                    .setBackgroundBlurRadius(mSurface, blur)
                    .setOpaque(mSurface, opaque)
                    .setOpaque(mSurface, opaque)
+1 −3
Original line number Original line Diff line number Diff line
@@ -19,7 +19,6 @@ import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKG


import android.content.Context;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Color;
import android.os.SystemProperties;


import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.DeviceProfile;
@@ -85,8 +84,7 @@ public class BackgroundAppState extends OverviewState {


    @Override
    @Override
    protected float getDepthUnchecked(Context context) {
    protected float getDepthUnchecked(Context context) {
        //TODO revert when b/178661709 is fixed
        return 1;
        return SystemProperties.getBoolean("ro.launcher.depth.appLaunch", true) ? 1 : 0;
    }
    }


    @Override
    @Override