summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/LauncherModel.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/LauncherModel.java')
-rw-r--r--src/com/android/launcher3/LauncherModel.java33
1 files changed, 24 insertions, 9 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 89a68369b..9fddd3d8d 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -1729,17 +1729,24 @@ public class LauncherModel extends BroadcastReceiver
quietMode.put(serialNo, mUserManager.isQuietModeEnabled(user));
boolean userUnlocked = mUserManager.isUserUnlocked(user);
- unlockedUsers.put(serialNo, userUnlocked);
// We can only query for shortcuts when the user is unlocked.
if (userUnlocked) {
- List<ShortcutInfoCompat> pinnedShortcuts = mDeepShortcutManager
- .queryForPinnedShortcuts(null, user);
- for (ShortcutInfoCompat shortcut : pinnedShortcuts) {
- shortcutKeyToPinnedShortcuts.put(ShortcutKey.fromInfo(shortcut),
- shortcut);
+ List<ShortcutInfoCompat> pinnedShortcuts =
+ mDeepShortcutManager.queryForPinnedShortcuts(null, user);
+ if (mDeepShortcutManager.wasLastCallSuccess()) {
+ for (ShortcutInfoCompat shortcut : pinnedShortcuts) {
+ shortcutKeyToPinnedShortcuts.put(ShortcutKey.fromInfo(shortcut),
+ shortcut);
+ }
+ } else {
+ // Shortcut manager can fail due to some race condition when the
+ // lock state changes too frequently. For the purpose of the loading
+ // shortcuts, consider the user is still locked.
+ userUnlocked = false;
}
}
+ unlockedUsers.put(serialNo, userUnlocked);
}
ShortcutInfo info;
@@ -3383,9 +3390,17 @@ public class LauncherModel extends BroadcastReceiver
HashMap<ShortcutKey, ShortcutInfoCompat> pinnedShortcuts = new HashMap<>();
if (isUserUnlocked) {
- for (ShortcutInfoCompat shortcut :
- mDeepShortcutManager.queryForPinnedShortcuts(null, mUser)) {
- pinnedShortcuts.put(ShortcutKey.fromInfo(shortcut), shortcut);
+ List<ShortcutInfoCompat> shortcuts =
+ mDeepShortcutManager.queryForPinnedShortcuts(null, mUser);
+ if (mDeepShortcutManager.wasLastCallSuccess()) {
+ for (ShortcutInfoCompat shortcut : shortcuts) {
+ pinnedShortcuts.put(ShortcutKey.fromInfo(shortcut), shortcut);
+ }
+ } else {
+ // Shortcut manager can fail due to some race condition when the lock state
+ // changes too frequently. For the purpose of the update,
+ // consider it as still locked.
+ isUserUnlocked = false;
}
}