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

Commit 521c2a03 authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Fising launcher stuck on blur

The same surface can become invalid, in which case we need to wait
until the next draw to apply blur

Bug: 284411563
Test: Verified on device
Change-Id: Ifb6be94756fd00c5925e11a6b7d57f206e063a17
parent 76ad67a0
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -2042,10 +2042,5 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
            setCrossWindowBlursEnabled(
                    CrossWindowBlurListeners.getInstance().isCrossWindowBlurEnabled());
        }

        @Override
        public void setSurface(SurfaceControl surface) {
            super.setSurface(surface);
        }
    }
}
+6 −0
Original line number Diff line number Diff line
@@ -158,6 +158,12 @@ public class DepthController extends BaseDepthController implements StateHandler
        super.applyDepthAndBlur();
    }

    @Override
    protected void onInvalidSurface() {
        // Lets wait for surface to become valid again
        mLauncher.getDragLayer().getViewTreeObserver().addOnDrawListener(mOnDrawListener);
    }

    @Override
    public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {
        mIgnoreStateChangesDuringMultiWindowAnimation = true;
+12 −2
Original line number Diff line number Diff line
@@ -88,6 +88,8 @@ public class BaseDepthController {
     */
    protected boolean mInEarlyWakeUp;

    private boolean mWaitingOnSurfaceValidity;

    public BaseDepthController(Launcher activity) {
        mLauncher = activity;
        mMaxBlurRadius = activity.getResources().getInteger(R.integer.max_depth_blur_radius);
@@ -115,6 +117,8 @@ public class BaseDepthController {
        }
    }

    protected void onInvalidSurface() { }

    protected void applyDepthAndBlur() {
        float depth = mDepth;
        IBinder windowToken = mLauncher.getRootView().getWindowToken();
@@ -128,9 +132,15 @@ public class BaseDepthController {
        if (!BlurUtils.supportsBlursOnWindows()) {
            return;
        }
        if (mSurface == null || !mSurface.isValid()) {
        if (mSurface == null) {
            return;
        }
        if (!mSurface.isValid()) {
            mWaitingOnSurfaceValidity = true;
            onInvalidSurface();
            return;
        }
        mWaitingOnSurfaceValidity = false;
        boolean hasOpaqueBg = mLauncher.getScrimView().isFullyOpaque();
        boolean isSurfaceOpaque = !mHasContentBehindLauncher && hasOpaqueBg && !mPauseBlurs;

@@ -174,7 +184,7 @@ public class BaseDepthController {
     * Sets the specified app target surface to apply the blur to.
     */
    protected void setSurface(SurfaceControl surface) {
        if (mSurface != surface) {
        if (mSurface != surface || mWaitingOnSurfaceValidity) {
            mSurface = surface;
            applyDepthAndBlur();
        }