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

Commit b60fff39 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Disable blurs when dev setting or battery saver

Stop rendering blurs whenever a user:
- disables blurs on developer settings
- enables battery saver

Test: manual
Bug: 191814337
Change-Id: I8fd04796054d92171732c8db95b64cfa3ec469ec
parent 2f65e7f2
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.os.IBinder;
import android.util.FloatProperty;
import android.view.CrossWindowBlurListeners;
import android.view.SurfaceControl;
import android.view.View;
import android.view.ViewRootImpl;
@@ -41,6 +42,8 @@ import com.android.launcher3.states.StateAnimationConfig;
import com.android.systemui.shared.system.BlurUtils;
import com.android.systemui.shared.system.WallpaperManagerCompat;

import java.util.function.Consumer;

/**
 * Controls blur and wallpaper zoom, for the Launcher surface only.
 */
@@ -96,11 +99,17 @@ public class DepthController implements StateHandler<LauncherState>,
                }
            };

    private final Consumer<Boolean> mCrossWindowBlurListener = (enabled) -> {
        mCrossWindowBlursEnabled = enabled;
        dispatchTransactionSurface();
    };

    private final Launcher mLauncher;
    /**
     * Blur radius when completely zoomed out, in pixels.
     */
    private int mMaxBlurRadius;
    private boolean mCrossWindowBlursEnabled;
    private WallpaperManagerCompat mWallpaperManager;
    private SurfaceControl mSurface;
    /**
@@ -123,6 +132,7 @@ public class DepthController implements StateHandler<LauncherState>,
            mMaxBlurRadius = mLauncher.getResources().getInteger(R.integer.max_depth_blur_radius);
            mWallpaperManager = new WallpaperManagerCompat(mLauncher);
        }

        if (mLauncher.getRootView() != null && mOnAttachListener == null) {
            mOnAttachListener = new View.OnAttachStateChangeListener() {
                @Override
@@ -132,13 +142,20 @@ public class DepthController implements StateHandler<LauncherState>,
                    if (windowToken != null) {
                        mWallpaperManager.setWallpaperZoomOut(windowToken, mDepth);
                    }
                    CrossWindowBlurListeners.getInstance().addListener(mLauncher.getMainExecutor(),
                            mCrossWindowBlurListener);
                }

                @Override
                public void onViewDetachedFromWindow(View view) {
                    CrossWindowBlurListeners.getInstance().removeListener(mCrossWindowBlurListener);
                }
            };
            mLauncher.getRootView().addOnAttachStateChangeListener(mOnAttachListener);
            if (mLauncher.getRootView().isAttachedToWindow()) {
                CrossWindowBlurListeners.getInstance().addListener(mLauncher.getMainExecutor(),
                        mCrossWindowBlurListener);
            }
        }
    }

@@ -220,7 +237,8 @@ public class DepthController implements StateHandler<LauncherState>,
            boolean isOverview = mLauncher.isInState(LauncherState.OVERVIEW);
            boolean opaque = mLauncher.getScrimView().isFullyOpaque() && !isOverview;

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