diff options
author | d34d <clark@cyngn.com> | 2016-05-09 09:27:55 -0700 |
---|---|---|
committer | Clark Scheff <clark@cyngn.com> | 2016-05-16 08:54:23 -0700 |
commit | ad97956f82215357c50158b2384d527a96cce0d1 (patch) | |
tree | 7813a32c63622867e466230bd7f0e31216e454e2 /services/core/java/com/android/server/wm | |
parent | 20cb552a18faf9db89a7f92cb5c5a041a28216e2 (diff) | |
download | frameworks_base-ad97956f82215357c50158b2384d527a96cce0d1.zip frameworks_base-ad97956f82215357c50158b2384d527a96cce0d1.tar.gz frameworks_base-ad97956f82215357c50158b2384d527a96cce0d1.tar.bz2 |
Expose lock screen blurring as a setting [2/2]
This will provide control over blurring since the current implementation
assumes it is always on provided the device config specifies it
supports blur.
Change-Id: If6d1f1290473df20bda7e96e42571285bd2d8967
TICKET: CYNGNOS-2610
Diffstat (limited to 'services/core/java/com/android/server/wm')
-rw-r--r-- | services/core/java/com/android/server/wm/WindowAnimator.java | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java index 5de1837..1ff209b 100644 --- a/services/core/java/com/android/server/wm/WindowAnimator.java +++ b/services/core/java/com/android/server/wm/WindowAnimator.java @@ -30,6 +30,8 @@ import static com.android.server.wm.WindowManagerService.LayoutFields.SET_ORIENT import static com.android.server.wm.WindowManagerService.LayoutFields.SET_WALLPAPER_ACTION_PENDING; import android.content.Context; +import android.database.ContentObserver; +import android.os.Handler; import android.os.RemoteException; import android.util.Slog; import android.util.SparseArray; @@ -44,6 +46,8 @@ import android.view.Choreographer; import com.android.server.wm.WindowManagerService.LayoutFields; +import cyanogenmod.providers.CMSettings; + import java.io.PrintWriter; import java.util.ArrayList; @@ -98,7 +102,7 @@ public class WindowAnimator { /** Use one animation for all entering activities after keyguard is dismissed. */ Animation mPostKeyguardExitAnimation; - private final boolean mBlurUiEnabled; + private boolean mKeyguardBlurEnabled; // forceHiding states. static final int KEYGUARD_NOT_SHOWN = 0; @@ -120,9 +124,14 @@ public class WindowAnimator { mContext = service.mContext; mPolicy = service.mPolicy; - mBlurUiEnabled = mContext.getResources().getBoolean( + boolean blurUiEnabled = mContext.getResources().getBoolean( com.android.internal.R.bool.config_ui_blur_enabled); + if (blurUiEnabled) { + SettingsObserver observer = new SettingsObserver(new Handler()); + observer.observe(mContext); + } + mAnimationFrameCallback = new Choreographer.FrameCallback() { public void doFrame(long frameTimeNs) { synchronized (mService.mWindowMap) { @@ -223,7 +232,7 @@ public class WindowAnimator { // Only hide windows if the keyguard is active and not animating away. boolean keyguardOn = mPolicy.isKeyguardShowingOrOccluded() - && (mForceHiding != KEYGUARD_ANIMATING_OUT && !mBlurUiEnabled); + && (mForceHiding != KEYGUARD_ANIMATING_OUT && !mKeyguardBlurEnabled); return keyguardOn && !allowWhenLocked && (win.getDisplayId() == Display.DEFAULT_DISPLAY); } @@ -232,7 +241,7 @@ public class WindowAnimator { final WindowList windows = mService.getWindowListLocked(displayId); - if (mKeyguardGoingAway && !mBlurUiEnabled) { + if (mKeyguardGoingAway && !mKeyguardBlurEnabled) { for (int i = windows.size() - 1; i >= 0; i--) { WindowState win = windows.get(i); if (!mPolicy.isKeyguardHostWindow(win.mAttrs)) { @@ -247,7 +256,7 @@ public class WindowAnimator { // Create a new animation to delay until keyguard is gone on its own. winAnimator.mAnimation = new AlphaAnimation(1.0f, 1.0f); winAnimator.mAnimation.setDuration( - mBlurUiEnabled ? 0 : KEYGUARD_ANIM_TIMEOUT_MS); + mKeyguardBlurEnabled ? 0 : KEYGUARD_ANIM_TIMEOUT_MS); winAnimator.mAnimationIsEntrance = false; winAnimator.mAnimationStartTime = -1; winAnimator.mKeyguardGoingAwayAnimation = true; @@ -337,7 +346,7 @@ public class WindowAnimator { if (nowAnimating && win.mWinAnimator.mKeyguardGoingAwayAnimation) { mForceHiding = KEYGUARD_ANIMATING_OUT; } else { - mForceHiding = win.isDrawnLw() && !mBlurUiEnabled ? + mForceHiding = win.isDrawnLw() && !mKeyguardBlurEnabled ? KEYGUARD_SHOWN : KEYGUARD_NOT_SHOWN; } } @@ -890,4 +899,30 @@ public class WindowAnimator { private class DisplayContentsAnimator { ScreenRotationAnimation mScreenRotationAnimation = null; } + + private class SettingsObserver extends ContentObserver { + public SettingsObserver(Handler handler) { + super(handler); + } + + public void observe(Context context) { + context.getContentResolver().registerContentObserver( + CMSettings.Secure.getUriFor(CMSettings.Secure.LOCK_SCREEN_BLUR_ENABLED), + false, + this); + + onChange(true); + } + + public void unobserve(Context context) { + context.getContentResolver().unregisterContentObserver(this); + } + + @Override + public void onChange(boolean selfChange) { + // default to being enabled since we are here because the blur config was set to true + mKeyguardBlurEnabled = CMSettings.Secure.getInt(mContext.getContentResolver(), + CMSettings.Secure.LOCK_SCREEN_BLUR_ENABLED, 1) == 1; + } + } } |