diff --git a/services/core/java/com/android/server/wm/BlurController.java b/services/core/java/com/android/server/wm/BlurController.java index 23c27f85b0667..ff1016855287a 100644 --- a/services/core/java/com/android/server/wm/BlurController.java +++ b/services/core/java/com/android/server/wm/BlurController.java @@ -30,8 +30,6 @@ import android.os.RemoteException; import android.provider.Settings; import android.view.ICrossWindowBlurEnabledListener; -import com.android.internal.annotations.GuardedBy; - /** * Keeps track of the different factors that determine whether cross-window blur is enabled * or disabled. Also keeps a list of all interested listeners and notifies them when the @@ -44,8 +42,7 @@ final class BlurController { // We don't use the WM global lock, because the BlurController is not involved in window // drawing and only receives binder calls that don't need synchronization with the rest of WM private final Object mLock = new Object(); - @GuardedBy("mLock") - boolean mBlurEnabled; + private volatile boolean mBlurEnabled; private boolean mInPowerSaveMode; private boolean mBlurDisabledSetting; @@ -87,9 +84,7 @@ final class BlurController { boolean registerCrossWindowBlurEnabledListener(ICrossWindowBlurEnabledListener listener) { if (listener == null) return false; mBlurEnabledListeners.register(listener); - synchronized (mLock) { - return mBlurEnabled; - } + return getBlurEnabled(); } void unregisterCrossWindowBlurEnabledListener(ICrossWindowBlurEnabledListener listener) { @@ -97,6 +92,10 @@ final class BlurController { mBlurEnabledListeners.unregister(listener); } + boolean getBlurEnabled() { + return mBlurEnabled; + } + private void updateBlurEnabled() { synchronized (mLock) { final boolean newEnabled = CROSS_WINDOW_BLUR_SUPPORTED && !mBlurDisabledSetting diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 482d8e600b2f8..9e8b6a34e1d52 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -6292,7 +6292,7 @@ public class WindowManagerService extends IWindowManager.Stub } }); pw.print(" mInTouchMode="); pw.println(mInTouchMode); - pw.print(" mBlurEnabled="); pw.println(mBlurController.mBlurEnabled); + pw.print(" mBlurEnabled="); pw.println(mBlurController.getBlurEnabled()); pw.print(" mLastDisplayFreezeDuration="); TimeUtils.formatDuration(mLastDisplayFreezeDuration, pw); if ( mLastFinishedFreezeSource != null) { diff --git a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java index eb8b6f5e06fd5..4dc60070d6ec1 100644 --- a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java +++ b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java @@ -217,7 +217,7 @@ public class WindowManagerShellCommand extends ShellCommand { String arg = getNextArg(); if (arg == null) { pw.println("Blur supported on device: " + CROSS_WINDOW_BLUR_SUPPORTED); - pw.println("Blur enabled: " + mInternal.mBlurController.mBlurEnabled); + pw.println("Blur enabled: " + mInternal.mBlurController.getBlurEnabled()); return 0; } diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 905534f7bd1f1..f71d08afb1cb0 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -5354,7 +5354,8 @@ class WindowState extends WindowContainer implements WindowManagerP } private boolean shouldDrawBlurBehind() { - return (mAttrs.flags & FLAG_BLUR_BEHIND) != 0 && mWmService.mBlurController.mBlurEnabled; + return (mAttrs.flags & FLAG_BLUR_BEHIND) != 0 + && mWmService.mBlurController.getBlurEnabled(); } /**