Merge "Ensure the icon load request matches the ItemInfo for the floating view." into ub-launcher3-qt-qpr1-dev

This commit is contained in:
TreeHugger Robot
2019-09-10 16:49:24 +00:00
committed by Android (Google) Code Review
@@ -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;
}
}
}