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

Commit f82c4636 authored by Lucas Dupin's avatar Lucas Dupin Committed by Automerger Merge Worker
Browse files

Merge "Revert "Apply depth even when surface is null"" into sc-dev am: 8d43e462

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/15341690

Change-Id: I9faebe44fd95ed907376e93a3729bbdc3634b5ec
parents 6d2dd7a9 8d43e462
Loading
Loading
Loading
Loading
+20 −12
Original line number Diff line number Diff line
@@ -100,9 +100,12 @@ public class DepthController implements StateHandler<LauncherState>,
                }
            };

    private final Consumer<Boolean> mCrossWindowBlurListener = (enabled) -> {
    private final Consumer<Boolean> mCrossWindowBlurListener = new Consumer<Boolean>() {
        @Override
        public void accept(Boolean enabled) {
            mCrossWindowBlursEnabled = enabled;
        dispatchTransactionSurface();
            dispatchTransactionSurface(mDepth);
        }
    };

    private final Launcher mLauncher;
@@ -189,14 +192,14 @@ public class DepthController implements StateHandler<LauncherState>,
        if (mSurface != surface) {
            mSurface = surface;
            if (surface != null) {
                dispatchTransactionSurface();
                dispatchTransactionSurface(mDepth);
            }
        }
    }

    @Override
    public void setState(LauncherState toState) {
        if (mIgnoreStateChangesDuringMultiWindowAnimation) {
        if (mSurface == null || mIgnoreStateChangesDuringMultiWindowAnimation) {
            return;
        }

@@ -204,7 +207,7 @@ public class DepthController implements StateHandler<LauncherState>,
        if (Float.compare(mDepth, toDepth) != 0) {
            setDepth(toDepth);
        } else if (toState == LauncherState.OVERVIEW) {
            dispatchTransactionSurface();
            dispatchTransactionSurface(mDepth);
        }
    }

@@ -243,31 +246,36 @@ public class DepthController implements StateHandler<LauncherState>,
        if (Float.compare(mDepth, depthF) == 0) {
            return;
        }
        if (dispatchTransactionSurface(depthF)) {
            mDepth = depthF;
        dispatchTransactionSurface();
        }
    }

    private void dispatchTransactionSurface() {
    private boolean dispatchTransactionSurface(float depth) {
        boolean supportsBlur = BlurUtils.supportsBlursOnWindows();
        if (supportsBlur && (mSurface == null || !mSurface.isValid())) {
            return false;
        }
        ensureDependencies();
        IBinder windowToken = mLauncher.getRootView().getWindowToken();
        if (windowToken != null) {
            mWallpaperManager.setWallpaperZoomOut(windowToken, mDepth);
            mWallpaperManager.setWallpaperZoomOut(windowToken, depth);
        }

        if (supportsBlur && (mSurface != null && mSurface.isValid())) {
        if (supportsBlur) {
            // We cannot mark the window as opaque in overview because there will be an app window
            // below the launcher layer, and we need to draw it -- without blurs.
            boolean isOverview = mLauncher.isInState(LauncherState.OVERVIEW);
            boolean opaque = mLauncher.getScrimView().isFullyOpaque() && !isOverview;

            int blur = opaque || isOverview || !mCrossWindowBlursEnabled
                    || mBlurDisabledForAppLaunch ? 0 : (int) (mDepth * mMaxBlurRadius);
                    || mBlurDisabledForAppLaunch ? 0 : (int) (depth * mMaxBlurRadius);
            new SurfaceControl.Transaction()
                    .setBackgroundBlurRadius(mSurface, blur)
                    .setOpaque(mSurface, opaque)
                    .apply();
        }
        return true;
    }

    @Override