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

Commit 258e4526 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Remove blur from launcher when in overview

The App window will be under Launcher, so we can't actually blur
launcher at that time, otherwise the live window will also be blurred.

Test: manual
Bug: 189207458
Change-Id: Ie07449d29d3b0dc60d3787b6d32aa9e46e0bb613
parent 3ed65ede
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -161,7 +161,7 @@ public class DepthController implements StateHandler<LauncherState>,
        if (mSurface != surface) {
            mSurface = surface;
            if (surface != null) {
                setDepth(mDepth);
                dispatchTransactionSurface(mDepth);
            }
        }
    }
@@ -175,6 +175,8 @@ public class DepthController implements StateHandler<LauncherState>,
        float toDepth = toState.getDepth(mLauncher);
        if (Float.compare(mDepth, toDepth) != 0) {
            setDepth(toDepth);
        } else if (toState == LauncherState.OVERVIEW) {
            dispatchTransactionSurface(mDepth);
        }
    }

@@ -200,26 +202,35 @@ public class DepthController implements StateHandler<LauncherState>,
        if (Float.compare(mDepth, depthF) == 0) {
            return;
        }
        if (dispatchTransactionSurface(depthF)) {
            mDepth = depthF;
        }
    }

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

        if (supportsBlur) {
            boolean isOpaque = mLauncher.getScrimView().isFullyOpaque();
            int blur = isOpaque ? 0 : (int) (mDepth * mMaxBlurRadius);
            // 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 ? 0 : (int) (depth * mMaxBlurRadius);
            new SurfaceControl.Transaction()
                    .setBackgroundBlurRadius(mSurface, blur)
                    .setOpaque(mSurface, isOpaque)
                    .setOpaque(mSurface, opaque)
                    .apply();
        }
        return true;
    }

    @Override