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

Commit b09a10af authored by Tracy Zhou's avatar Tracy Zhou
Browse files

Always reset blur when blur radius drops to 0

Currently we check if blur is supported in the blur functions. However this doesn't work when getting these calls right after isBlurSupported is changed

Bug: 400590018
Bug: 388891313
Test: manual
Flag: com.android.systemui.notification_shade_blur
Flag: com.android.systemui.bouncer_ui_revamp
Change-Id: I841acdb1fcef7ad33eefe1fa8f34ca4116be5023
parent 782e299e
Loading
Loading
Loading
Loading
+14 −3
Original line number Original line Diff line number Diff line
@@ -86,7 +86,7 @@ open class BlurUtils @Inject constructor(
     */
     */
    fun prepareBlur(viewRootImpl: ViewRootImpl?, radius: Int) {
    fun prepareBlur(viewRootImpl: ViewRootImpl?, radius: Int) {
        if (viewRootImpl == null || !viewRootImpl.surfaceControl.isValid ||
        if (viewRootImpl == null || !viewRootImpl.surfaceControl.isValid ||
            !supportsBlursOnWindows() || earlyWakeupEnabled
            !shouldBlur(radius) || earlyWakeupEnabled
        ) {
        ) {
            return
            return
        }
        }
@@ -113,7 +113,7 @@ open class BlurUtils @Inject constructor(
            return
            return
        }
        }
        createTransaction().use {
        createTransaction().use {
            if (supportsBlursOnWindows()) {
            if (shouldBlur(radius)) {
                it.setBackgroundBlurRadius(viewRootImpl.surfaceControl, radius)
                it.setBackgroundBlurRadius(viewRootImpl.surfaceControl, radius)
                if (!earlyWakeupEnabled && lastAppliedBlur == 0 && radius != 0) {
                if (!earlyWakeupEnabled && lastAppliedBlur == 0 && radius != 0) {
                    Trace.asyncTraceForTrackBegin(
                    Trace.asyncTraceForTrackBegin(
@@ -142,6 +142,14 @@ open class BlurUtils @Inject constructor(
        return SurfaceControl.Transaction()
        return SurfaceControl.Transaction()
    }
    }


    private fun shouldBlur(radius: Int): Boolean {
        return supportsBlursOnWindows() ||
                ((Flags.notificationShadeBlur() || Flags.bouncerUiRevamp()) &&
                        supportsBlursOnWindowsBase() &&
                        lastAppliedBlur > 0 &&
                        radius == 0)
    }

    /**
    /**
     * If this device can render blurs.
     * If this device can render blurs.
     *
     *
@@ -149,8 +157,11 @@ open class BlurUtils @Inject constructor(
     * @return {@code true} when supported.
     * @return {@code true} when supported.
     */
     */
    open fun supportsBlursOnWindows(): Boolean {
    open fun supportsBlursOnWindows(): Boolean {
        return supportsBlursOnWindowsBase() && crossWindowBlurListeners.isCrossWindowBlurEnabled
    }

    private fun supportsBlursOnWindowsBase(): Boolean {
        return CROSS_WINDOW_BLUR_SUPPORTED && ActivityManager.isHighEndGfx() &&
        return CROSS_WINDOW_BLUR_SUPPORTED && ActivityManager.isHighEndGfx() &&
                crossWindowBlurListeners.isCrossWindowBlurEnabled() &&
                !SystemProperties.getBoolean("persist.sysui.disableBlur", false)
                !SystemProperties.getBoolean("persist.sysui.disableBlur", false)
    }
    }