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

Commit 69c0943e authored by Jorim Jaggi's avatar Jorim Jaggi Committed by Android Git Automerger
Browse files

am 50111539: am 5c75b9a7: am 5299d7e5: am 9b20e012: Merge "Don\'t preload task...

am 50111539: am 5c75b9a7: am 5299d7e5: am 9b20e012: Merge "Don\'t preload task description icons when opening recents" into lmp-dev

* commit '5011153937fdb0fbbb7d75e09204370c2aeed00a':
  Don't preload task description icons when opening recents
parents 8d2be4ba bea6595a
Loading
Loading
Loading
Loading
+17 −7
Original line number Diff line number Diff line
@@ -635,21 +635,31 @@ public class ActivityManager {
            if (mIcon != null) {
                return mIcon;
            }
            if (mIconFilename != null) {
            return loadTaskDescriptionIcon(mIconFilename);
        }

        /** @hide */
        public String getIconFilename() {
            return mIconFilename;
        }

        /** @hide */
        public Bitmap getInMemoryIcon() {
            return mIcon;
        }

        /** @hide */
        public static Bitmap loadTaskDescriptionIcon(String iconFilename) {
            if (iconFilename != null) {
                try {
                    return ActivityManagerNative.getDefault().
                            getTaskDescriptionIcon(mIconFilename);
                            getTaskDescriptionIcon(iconFilename);
                } catch (RemoteException e) {
                }
            }
            return null;
        }

        /** @hide */
        public String getIconFilename() {
            return mIconFilename;
        }

        /**
         * @return The color override on the theme's primary color.
         */
+44 −13
Original line number Diff line number Diff line
@@ -177,16 +177,24 @@ class TaskResourceLoader implements Runnable {
                if (t != null) {
                    Drawable cachedIcon = mApplicationIconCache.get(t.key);
                    Bitmap cachedThumbnail = mThumbnailCache.get(t.key);

                    // Load the application icon if it is stale or we haven't cached one yet
                    if (cachedIcon == null) {
                        cachedIcon = getTaskDescriptionIcon(t.key, t.icon, t.iconFilename, ssp,
                                mContext.getResources());

                        if (cachedIcon == null) {
                            ActivityInfo info = ssp.getActivityInfo(t.key.baseIntent.getComponent(),
                                    t.key.userId);
                            if (info != null) {
                                cachedIcon = ssp.getActivityIcon(info, t.key.userId);
                            }
                        }

                        if (cachedIcon == null) {
                            cachedIcon = mDefaultApplicationIcon;
                        }

                        // At this point, even if we can't load the icon, we will set the default
                        // icon.
                        mApplicationIconCache.put(t.key, cachedIcon);
@@ -230,6 +238,17 @@ class TaskResourceLoader implements Runnable {
            }
        }
    }

    Drawable getTaskDescriptionIcon(Task.TaskKey taskKey, Bitmap iconBitmap, String iconFilename,
            SystemServicesProxy ssp, Resources res) {
        Bitmap tdIcon = iconBitmap != null
                ? iconBitmap
                : ActivityManager.TaskDescription.loadTaskDescriptionIcon(iconFilename);
        if (tdIcon != null) {
            return ssp.getBadgedIcon(new BitmapDrawable(res, tdIcon), taskKey.userId);
        }
        return null;
    }
}

/* Recents task loader
@@ -321,15 +340,20 @@ public class RecentsTaskLoader {
        if (icon != null) {
            return icon;
        }
        // Return the task description icon if it exists
        if (td != null && td.getIcon() != null) {
            icon = ssp.getBadgedIcon(new BitmapDrawable(res, td.getIcon()), taskKey.userId);
            mApplicationIconCache.put(taskKey, icon);
            return icon;
        }
        // If we are preloading this task, continue to load the activity icon

        // If we are preloading this task, continue to load the task description icon or the
        // activity icon
        if (preloadTask) {
            // All short paths failed, load the icon from the activity info and cache it

            // Return and cache the task description icon if it exists
            Drawable tdDrawable = mLoader.getTaskDescriptionIcon(taskKey, td.getInMemoryIcon(),
                    td.getIconFilename(), ssp, res);
            if (tdDrawable != null) {
                mApplicationIconCache.put(taskKey, tdDrawable);
                return tdDrawable;
            }

            // Load the icon from the activity info and cache it
            if (infoHandle.info == null) {
                infoHandle.info = ssp.getActivityInfo(taskKey.baseIntent.getComponent(),
                        taskKey.userId);
@@ -453,10 +477,17 @@ public class RecentsTaskLoader {
                activityInfoCache.put(cnKey, infoHandle);
            }

            Bitmap icon = t.taskDescription != null
                    ? t.taskDescription.getInMemoryIcon()
                    : null;
            String iconFilename = t.taskDescription != null
                    ? t.taskDescription.getIconFilename()
                    : null;

            // Add the task to the stack
            Task task = new Task(taskKey, (t.id > -1), t.affiliatedTaskId, t.affiliatedTaskColor,
                    activityLabel, activityIcon, activityColor, (i == (taskCount - 1)),
                    config.lockToAppEnabled);
                    config.lockToAppEnabled, icon, iconFilename);

            if (preloadTask && loadTaskThumbnails) {
                // Load the thumbnail from the cache if possible
+6 −2
Original line number Diff line number Diff line
@@ -124,7 +124,8 @@ public class Task {
    public boolean isActive;
    public boolean lockToThisTask;
    public boolean lockToTaskEnabled;

    public Bitmap icon;
    public String iconFilename;
    TaskCallbacks mCb;

    public Task() {
@@ -133,7 +134,8 @@ public class Task {

    public Task(TaskKey key, boolean isActive, int taskAffiliation, int taskAffiliationColor,
                String activityTitle, Drawable activityIcon, int colorPrimary,
                boolean lockToThisTask, boolean lockToTaskEnabled) {
                boolean lockToThisTask, boolean lockToTaskEnabled, Bitmap icon,
                String iconFilename) {
        boolean isInAffiliationGroup = (taskAffiliation != key.id);
        boolean hasAffiliationGroupColor = isInAffiliationGroup && (taskAffiliationColor != 0);
        this.key = key;
@@ -147,6 +149,8 @@ public class Task {
        this.isActive = isActive;
        this.lockToThisTask = lockToTaskEnabled && lockToThisTask;
        this.lockToTaskEnabled = lockToTaskEnabled;
        this.icon = icon;
        this.iconFilename = iconFilename;
    }

    /** Copies the other task. */