Ensure the icon load request matches the ItemInfo for the floating view.
This fixes the bug where the wrong icon is present during the app close animation. Bug: 138195597 Change-Id: Ife2c6ad135dde54583f6f2bb2caf3b1e9325e064 Merged-In: Ib3767ec5c2b4eb22b35e5148879e11d2c1b28e3c
This commit is contained in:
committed by
Jonathan Miranda
parent
01f8fb9132
commit
bdda7251df
@@ -721,7 +721,7 @@ public class FloatingIconView extends View implements
|
||||
*/
|
||||
@UiThread
|
||||
public static IconLoadResult fetchIcon(Launcher l, View v, ItemInfo info, boolean isOpening) {
|
||||
IconLoadResult result = new IconLoadResult();
|
||||
IconLoadResult result = new IconLoadResult(info);
|
||||
new Handler(LauncherModel.getWorkerLooper()).postAtFrontOfQueue(() -> {
|
||||
RectF position = new RectF();
|
||||
getLocationBoundsForView(l, v, isOpening, position);
|
||||
@@ -750,10 +750,13 @@ public class FloatingIconView extends View implements
|
||||
|
||||
// Get the drawable on the background thread
|
||||
boolean shouldLoadIcon = originalView.getTag() instanceof ItemInfo && hideOriginal;
|
||||
view.mIconLoadResult = sIconLoadResult;
|
||||
if (shouldLoadIcon && view.mIconLoadResult == null) {
|
||||
view.mIconLoadResult = fetchIcon(launcher, originalView,
|
||||
(ItemInfo) originalView.getTag(), isOpening);
|
||||
if (shouldLoadIcon) {
|
||||
if (sIconLoadResult != null && sIconLoadResult.itemInfo == originalView.getTag()) {
|
||||
view.mIconLoadResult = sIconLoadResult;
|
||||
} else {
|
||||
view.mIconLoadResult = fetchIcon(launcher, originalView,
|
||||
(ItemInfo) originalView.getTag(), isOpening);
|
||||
}
|
||||
}
|
||||
sIconLoadResult = null;
|
||||
|
||||
@@ -895,10 +898,15 @@ public class FloatingIconView extends View implements
|
||||
}
|
||||
|
||||
private static class IconLoadResult {
|
||||
final ItemInfo itemInfo;
|
||||
Drawable drawable;
|
||||
Drawable badge;
|
||||
int iconOffset;
|
||||
Runnable onIconLoaded;
|
||||
boolean isIconLoaded;
|
||||
|
||||
public IconLoadResult(ItemInfo itemInfo) {
|
||||
this.itemInfo = itemInfo;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user