Loading quickstep/src/com/android/quickstep/TaskIconCache.java +18 −4 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.UserHandle; import android.text.TextUtils; import android.util.SparseArray; import android.view.accessibility.AccessibilityManager; import androidx.annotation.WorkerThread; Loading Loading @@ -62,7 +63,9 @@ public class TaskIconCache implements DisplayInfoChangeListener { private final Context mContext; private final TaskKeyLruCache<TaskCacheEntry> mIconCache; private final BitmapInfo[] mDefaultIcons = new BitmapInfo[1]; private final SparseArray<BitmapInfo> mDefaultIcons = new SparseArray<>(); private BitmapInfo mDefaultIconBase = null; private final IconProvider mIconProvider; private BaseIconFactory mIconFactory; Loading Loading @@ -208,12 +211,23 @@ public class TaskIconCache implements DisplayInfoChangeListener { @WorkerThread private Drawable getDefaultIcon(int userId) { synchronized (mDefaultIcons) { if (mDefaultIcons[0] == null) { if (mDefaultIconBase == null) { try (BaseIconFactory bif = getIconFactory()) { mDefaultIcons[0] = bif.makeDefaultIcon(); mDefaultIconBase = bif.makeDefaultIcon(); } } int index; if ((index = mDefaultIcons.indexOfKey(userId)) >= 0) { return mDefaultIcons.valueAt(index).newIcon(mContext); } else { try (BaseIconFactory li = getIconFactory()) { BitmapInfo info = mDefaultIconBase.withFlags( li.getBitmapFlagOp(new IconOptions().setUser(UserHandle.of(userId)))); mDefaultIcons.put(userId, info); return info.newIcon(mContext); } } return mDefaultIcons[0].clone().withUser(UserHandle.of(userId)).newIcon(mContext); } } Loading src/com/android/launcher3/model/PackageUpdatedTask.java +7 −9 Original line number Diff line number Diff line Loading @@ -112,7 +112,7 @@ public class PackageUpdatedTask extends BaseModelUpdateTask { activitiesLists.put( packages[i], appsList.addPackage(context, packages[i], mUser)); } flagOp = FlagOp.removeFlag(WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE); flagOp = FlagOp.NO_OP.removeFlag(WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE); break; } case OP_UPDATE: Loading @@ -134,7 +134,7 @@ public class PackageUpdatedTask extends BaseModelUpdateTask { } } // Since package was just updated, the target must be available now. flagOp = FlagOp.removeFlag(WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE); flagOp = FlagOp.NO_OP.removeFlag(WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE); break; case OP_REMOVE: { for (int i = 0; i < N; i++) { Loading @@ -148,13 +148,12 @@ public class PackageUpdatedTask extends BaseModelUpdateTask { if (DEBUG) Log.d(TAG, "mAllAppsList.removePackage " + packages[i]); appsList.removePackage(packages[i], mUser); } flagOp = FlagOp.addFlag(WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE); flagOp = FlagOp.NO_OP.addFlag(WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE); break; case OP_SUSPEND: case OP_UNSUSPEND: flagOp = mOp == OP_SUSPEND ? FlagOp.addFlag(WorkspaceItemInfo.FLAG_DISABLED_SUSPENDED) : FlagOp.removeFlag(WorkspaceItemInfo.FLAG_DISABLED_SUSPENDED); flagOp = FlagOp.NO_OP.setFlag( WorkspaceItemInfo.FLAG_DISABLED_SUSPENDED, mOp == OP_SUSPEND); if (DEBUG) Log.d(TAG, "mAllAppsList.(un)suspend " + N); appsList.updateDisabledFlags(matcher, flagOp); break; Loading @@ -162,9 +161,8 @@ public class PackageUpdatedTask extends BaseModelUpdateTask { UserManagerState ums = new UserManagerState(); ums.init(UserCache.INSTANCE.get(context), context.getSystemService(UserManager.class)); flagOp = ums.isUserQuiet(mUser) ? FlagOp.addFlag(WorkspaceItemInfo.FLAG_DISABLED_QUIET_USER) : FlagOp.removeFlag(WorkspaceItemInfo.FLAG_DISABLED_QUIET_USER); flagOp = FlagOp.NO_OP.setFlag( WorkspaceItemInfo.FLAG_DISABLED_QUIET_USER, ums.isUserQuiet(mUser)); appsList.updateDisabledFlags(matcher, flagOp); // We are not synchronizing here, as int operations are atomic Loading src/com/android/launcher3/util/FlagOp.javadeleted 100644 → 0 +0 −16 Original line number Diff line number Diff line package com.android.launcher3.util; public interface FlagOp { FlagOp NO_OP = i -> i; int apply(int flags); static FlagOp addFlag(int flag) { return i -> i | flag; } static FlagOp removeFlag(int flag) { return i -> i & ~flag; } } Loading
quickstep/src/com/android/quickstep/TaskIconCache.java +18 −4 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.UserHandle; import android.text.TextUtils; import android.util.SparseArray; import android.view.accessibility.AccessibilityManager; import androidx.annotation.WorkerThread; Loading Loading @@ -62,7 +63,9 @@ public class TaskIconCache implements DisplayInfoChangeListener { private final Context mContext; private final TaskKeyLruCache<TaskCacheEntry> mIconCache; private final BitmapInfo[] mDefaultIcons = new BitmapInfo[1]; private final SparseArray<BitmapInfo> mDefaultIcons = new SparseArray<>(); private BitmapInfo mDefaultIconBase = null; private final IconProvider mIconProvider; private BaseIconFactory mIconFactory; Loading Loading @@ -208,12 +211,23 @@ public class TaskIconCache implements DisplayInfoChangeListener { @WorkerThread private Drawable getDefaultIcon(int userId) { synchronized (mDefaultIcons) { if (mDefaultIcons[0] == null) { if (mDefaultIconBase == null) { try (BaseIconFactory bif = getIconFactory()) { mDefaultIcons[0] = bif.makeDefaultIcon(); mDefaultIconBase = bif.makeDefaultIcon(); } } int index; if ((index = mDefaultIcons.indexOfKey(userId)) >= 0) { return mDefaultIcons.valueAt(index).newIcon(mContext); } else { try (BaseIconFactory li = getIconFactory()) { BitmapInfo info = mDefaultIconBase.withFlags( li.getBitmapFlagOp(new IconOptions().setUser(UserHandle.of(userId)))); mDefaultIcons.put(userId, info); return info.newIcon(mContext); } } return mDefaultIcons[0].clone().withUser(UserHandle.of(userId)).newIcon(mContext); } } Loading
src/com/android/launcher3/model/PackageUpdatedTask.java +7 −9 Original line number Diff line number Diff line Loading @@ -112,7 +112,7 @@ public class PackageUpdatedTask extends BaseModelUpdateTask { activitiesLists.put( packages[i], appsList.addPackage(context, packages[i], mUser)); } flagOp = FlagOp.removeFlag(WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE); flagOp = FlagOp.NO_OP.removeFlag(WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE); break; } case OP_UPDATE: Loading @@ -134,7 +134,7 @@ public class PackageUpdatedTask extends BaseModelUpdateTask { } } // Since package was just updated, the target must be available now. flagOp = FlagOp.removeFlag(WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE); flagOp = FlagOp.NO_OP.removeFlag(WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE); break; case OP_REMOVE: { for (int i = 0; i < N; i++) { Loading @@ -148,13 +148,12 @@ public class PackageUpdatedTask extends BaseModelUpdateTask { if (DEBUG) Log.d(TAG, "mAllAppsList.removePackage " + packages[i]); appsList.removePackage(packages[i], mUser); } flagOp = FlagOp.addFlag(WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE); flagOp = FlagOp.NO_OP.addFlag(WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE); break; case OP_SUSPEND: case OP_UNSUSPEND: flagOp = mOp == OP_SUSPEND ? FlagOp.addFlag(WorkspaceItemInfo.FLAG_DISABLED_SUSPENDED) : FlagOp.removeFlag(WorkspaceItemInfo.FLAG_DISABLED_SUSPENDED); flagOp = FlagOp.NO_OP.setFlag( WorkspaceItemInfo.FLAG_DISABLED_SUSPENDED, mOp == OP_SUSPEND); if (DEBUG) Log.d(TAG, "mAllAppsList.(un)suspend " + N); appsList.updateDisabledFlags(matcher, flagOp); break; Loading @@ -162,9 +161,8 @@ public class PackageUpdatedTask extends BaseModelUpdateTask { UserManagerState ums = new UserManagerState(); ums.init(UserCache.INSTANCE.get(context), context.getSystemService(UserManager.class)); flagOp = ums.isUserQuiet(mUser) ? FlagOp.addFlag(WorkspaceItemInfo.FLAG_DISABLED_QUIET_USER) : FlagOp.removeFlag(WorkspaceItemInfo.FLAG_DISABLED_QUIET_USER); flagOp = FlagOp.NO_OP.setFlag( WorkspaceItemInfo.FLAG_DISABLED_QUIET_USER, ums.isUserQuiet(mUser)); appsList.updateDisabledFlags(matcher, flagOp); // We are not synchronizing here, as int operations are atomic Loading
src/com/android/launcher3/util/FlagOp.javadeleted 100644 → 0 +0 −16 Original line number Diff line number Diff line package com.android.launcher3.util; public interface FlagOp { FlagOp NO_OP = i -> i; int apply(int flags); static FlagOp addFlag(int flag) { return i -> i | flag; } static FlagOp removeFlag(int flag) { return i -> i & ~flag; } }