From 8b14ffb876b2aef7d4f93e11f397e3978231c3b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Victor=20Mendes=20Freire?= Date: Mon, 5 Dec 2022 19:52:42 +0000 Subject: [PATCH] Fix user avatar not being set on rotation This commit fixes the issue where the user avatar was not being colored (using only the gray one) when the device was rotated. Additionally, it fixes a race condition issue of the avatar color sometimes being different than the selected one. Bug: 261035066 Test: manually tested && atest UserSettingsComponentTest Change-Id: I739fa8fd5d8717b602d7ba561d9c728ce622ff10 --- src/com/android/settings/users/UserSettings.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 3bd51e85050..cc9b41e68eb 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -1021,6 +1021,8 @@ public class UserSettings extends SettingsPreferenceFragment @VisibleForTesting void createUser(final int userType, String userName) { Context context = getContext(); + Resources resources = getResources(); + final Drawable selectedUserIcon = mPendingUserIcon; Future unusedCreateUserFuture = ThreadUtils.postOnBackgroundThread(() -> { UserInfo user; @@ -1043,13 +1045,13 @@ public class UserSettings extends SettingsPreferenceFragment } Future unusedSettingIconFuture = ThreadUtils.postOnBackgroundThread(() -> { - Drawable newUserIcon = mPendingUserIcon; + Drawable newUserIcon = selectedUserIcon; if (newUserIcon == null) { - newUserIcon = UserIcons.getDefaultUserIcon(getResources(), user.id, false); + newUserIcon = UserIcons.getDefaultUserIcon(resources, user.id, false); } mUserManager.setUserIcon( user.id, UserIcons.convertToBitmapAtUserIconSize( - getResources(), newUserIcon)); + resources, newUserIcon)); }); mPendingUserIcon = null;