Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 08857d2f authored by Jon Miranda's avatar Jon Miranda Committed by Jonathan Miranda
Browse files

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: Ib3767ec5c2b4eb22b35e5148879e11d2c1b28e3c
parent 478414a7
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -720,7 +720,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);
        MODEL_EXECUTOR.getHandler().postAtFrontOfQueue(() -> {
            RectF position = new RectF();
            getLocationBoundsForView(l, v, isOpening, position);
@@ -749,11 +749,14 @@ public class FloatingIconView extends View implements

        // Get the drawable on the background thread
        boolean shouldLoadIcon = originalView.getTag() instanceof ItemInfo && hideOriginal;
        if (shouldLoadIcon) {
            if (sIconLoadResult != null && sIconLoadResult.itemInfo == originalView.getTag()) {
                view.mIconLoadResult = sIconLoadResult;
        if (shouldLoadIcon && view.mIconLoadResult == null) {
            } else {
                view.mIconLoadResult = fetchIcon(launcher, originalView,
                        (ItemInfo) originalView.getTag(), isOpening);
            }
        }
        sIconLoadResult = null;

        view.mIsVerticalBarLayout = launcher.getDeviceProfile().isVerticalBarLayout();
@@ -894,10 +897,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;
        }
    }
}