Merge "Removing unnecessary system RPC for checking flags on every touch event" into ub-launcher3-master
diff --git a/go/quickstep/src/com/android/quickstep/TaskListLoader.java b/go/quickstep/src/com/android/quickstep/TaskListLoader.java
index 9f359b4..c798cef 100644
--- a/go/quickstep/src/com/android/quickstep/TaskListLoader.java
+++ b/go/quickstep/src/com/android/quickstep/TaskListLoader.java
@@ -85,34 +85,40 @@
}
/**
- * Loads task content for a list of tasks, including the label and the icon. Uses the list of
- * tasks since the last load as a cache for loaded content.
+ * Loads task content for a list of tasks, including the label, icon, and thumbnail. For content
+ * that isn't cached, load the content asynchronously in the background.
*
* @param tasksToLoad list of tasks that need to load their content
- * @param onLoadedCallback runnable to run after all tasks have loaded their content
+ * @param onFullyLoadedCallback runnable to run after all tasks have loaded their content
*/
private void loadTaskContents(ArrayList<Task> tasksToLoad,
- @Nullable Runnable onLoadedCallback) {
- AtomicInteger loadRequestsCount = new AtomicInteger(0);
+ @Nullable Runnable onFullyLoadedCallback) {
+ // Make two load requests per task, one for the icon/title and one for the thumbnail.
+ AtomicInteger loadRequestsCount = new AtomicInteger(tasksToLoad.size() * 2);
+ Runnable itemLoadedRunnable = () -> {
+ if (loadRequestsCount.decrementAndGet() == 0 && onFullyLoadedCallback != null) {
+ onFullyLoadedCallback.run();
+ }
+ };
for (Task task : tasksToLoad) {
+ // Load icon and title.
int index = mTaskList.indexOf(task);
if (index >= 0) {
// If we've already loaded the task and have its content then just copy it over.
Task loadedTask = mTaskList.get(index);
task.titleDescription = loadedTask.titleDescription;
task.icon = loadedTask.icon;
+ itemLoadedRunnable.run();
} else {
// Otherwise, load the content in the background.
- loadRequestsCount.getAndIncrement();
- mRecentsModel.getIconCache().updateIconInBackground(task, loadedTask -> {
- if (loadRequestsCount.decrementAndGet() == 0 && onLoadedCallback != null) {
- onLoadedCallback.run();
- }
- });
+ mRecentsModel.getIconCache().updateIconInBackground(task,
+ loadedTask -> itemLoadedRunnable.run());
}
- }
- if (loadRequestsCount.get() == 0 && onLoadedCallback != null) {
- onLoadedCallback.run();
+
+ // Load the thumbnail. May return immediately and synchronously if the thumbnail is
+ // cached.
+ mRecentsModel.getThumbnailCache().updateThumbnailInBackground(task,
+ thumbnail -> itemLoadedRunnable.run());
}
}
}