From ef5159e8df94fca678468fa28e621f3d33e7b974 Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Fri, 23 Feb 2024 15:00:33 -0800 Subject: [PATCH] Request high res icons for app pairs after all workspace items processed * TL;DR Loading workspace icons only requests high res icons for apps on workspace or in hotseat, not for folders or app pairs. They need to request that separately * See notes on bug for root cause Test: Created many app pairs, empty icons does not repro. If I remove my change issue consistently repros, not a race condition Fixes: 323106492 Change-Id: I05ba5e8e8b0eddd4041642f89d06deff85511e40 --- src/com/android/launcher3/model/LoaderTask.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java index 71ab51cc17..17cef900ec 100644 --- a/src/com/android/launcher3/model/LoaderTask.java +++ b/src/com/android/launcher3/model/LoaderTask.java @@ -475,11 +475,23 @@ public class LoaderTask implements Runnable { mItemsDeleted = c.commitDeleted(); processFolderItems(); + processAppPairItems(); c.commitRestoredItems(); } } + /** + * After all items have been processed and added to the BgDataModel, this method requests + * high-res icons for the items that are part of an app pair + */ + private void processAppPairItems() { + mBgDataModel.workspaceItems.stream() + .filter((itemInfo -> itemInfo.itemType == ITEM_TYPE_APP_PAIR)) + .forEach(fi -> ((FolderInfo) fi).contents.forEach(item -> + mIconCache.getTitleAndIcon(item, false /*useLowResIcon*/))); + } + /** * Initialized the UserManagerState, and determines which users are unlocked. Additionally, if * the user is unlocked, it queries LauncherAppsService for pinned shortcuts and stores the