diff options
author | Jorim Jaggi <jjaggi@google.com> | 2016-08-16 16:02:32 -0700 |
---|---|---|
committer | Jorim Jaggi <jjaggi@google.com> | 2016-08-17 18:10:54 +0000 |
commit | d11d1a9486d44b98e28b70c25711ebfc283b746e (patch) | |
tree | 7ccc893d6ebee09b8dc7e4ddbcb0a84c1655c2fa /packages/Keyguard | |
parent | 8aacc3cf982697cbd35baf7bde2a2940393de177 (diff) |
Fix a flicker when returning to the lockscreen
If we return to the lockscreen from a FLAG_SHOW_WHEN_LOCKED activity,
there was an additional black flicker as the wallpaper wasn't shown
for a couple of frames. The issue is that we didn't set the wallpaper
flag again, to fix another flicker with lockscreen wallpapers. Now,
we pass the state whether we currently have a lockscreen wallpaper
and if we don't have one, we immediately set the wallpaper flag
again.
Bug: 30829255
Bug: 30883413
Change-Id: I9faeaa77b98eb02058171ce19cf90b43826ebe9e
Diffstat (limited to 'packages/Keyguard')
-rw-r--r-- | packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java | 25 | ||||
-rw-r--r-- | packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java | 5 |
2 files changed, 30 insertions, 0 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java index 0a862914b14f..56f37414a0e6 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -178,6 +178,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private boolean mBouncer; private boolean mBootCompleted; private boolean mUserUnlocked; + private boolean mHasLockscreenWallpaper; // Device provisioning state private boolean mDeviceProvisioned; @@ -1173,6 +1174,30 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } /** + * Update the state whether Keyguard currently has a lockscreen wallpaper. + * + * @param hasLockscreenWallpaper Whether Keyguard has a lockscreen wallpaper. + */ + public void setHasLockscreenWallpaper(boolean hasLockscreenWallpaper) { + if (hasLockscreenWallpaper != mHasLockscreenWallpaper) { + mHasLockscreenWallpaper = hasLockscreenWallpaper; + for (int i = mCallbacks.size() - 1; i >= 0; i--) { + KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); + if (cb != null) { + cb.onHasLockscreenWallpaperChanged(hasLockscreenWallpaper); + } + } + } + } + + /** + * @return Whether Keyguard has a lockscreen wallpaper. + */ + public boolean hasLockscreenWallpaper() { + return mHasLockscreenWallpaper; + } + + /** * Handle {@link #MSG_DPM_STATE_CHANGED} */ protected void handleDevicePolicyManagerStateChanged() { diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java index bd6c51c3b89c..4a2d356b6ddd 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java @@ -240,4 +240,9 @@ public class KeyguardUpdateMonitorCallback { * has changed. */ public void onStrongAuthStateChanged(int userId) { } + + /** + * Called when the state whether we have a lockscreen wallpaper has changed. + */ + public void onHasLockscreenWallpaperChanged(boolean hasLockscreenWallpaper) { } } |