summaryrefslogtreecommitdiffstats
path: root/quickstep/recents_ui_overrides
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2019-02-26 13:05:31 -0800
committerSunny Goyal <sunnygoyal@google.com>2019-02-26 13:05:57 -0800
commit327e01d98c869a83a9c80cdab32f1add3f87713b (patch)
treeae97a5a31022fca1f239f23b40fa37b833613d57 /quickstep/recents_ui_overrides
parentb04dabf7efe49a69b3663734840cf772fd106804 (diff)
downloadandroid_packages_apps_Trebuchet-327e01d98c869a83a9c80cdab32f1add3f87713b.tar.gz
android_packages_apps_Trebuchet-327e01d98c869a83a9c80cdab32f1add3f87713b.tar.bz2
android_packages_apps_Trebuchet-327e01d98c869a83a9c80cdab32f1add3f87713b.zip
Fixing task snapshots not getting updated in recents view
Bug: 124620962 Change-Id: I7c6b9d1183faa01a0836194e42a9cd8517c8b61a
Diffstat (limited to 'quickstep/recents_ui_overrides')
-rw-r--r--quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java35
-rw-r--r--quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java25
2 files changed, 32 insertions, 28 deletions
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java
index 8faf95d5b..a7bf2c3ee 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java
@@ -90,6 +90,7 @@ import com.android.launcher3.util.ViewPool;
import com.android.quickstep.OverviewCallbacks;
import com.android.quickstep.RecentsAnimationWrapper;
import com.android.quickstep.RecentsModel;
+import com.android.quickstep.RecentsModel.TaskThumbnailChangeListener;
import com.android.quickstep.TaskThumbnailCache;
import com.android.quickstep.TaskUtils;
import com.android.quickstep.util.ClipAnimationHelper;
@@ -113,7 +114,7 @@ import java.util.function.Consumer;
@TargetApi(Build.VERSION_CODES.P)
public abstract class RecentsView<T extends BaseActivity> extends PagedView implements Insettable,
TaskThumbnailCache.HighResLoadingState.HighResLoadingStateChangedCallback,
- InvariantDeviceProfile.OnIDPChangeListener {
+ InvariantDeviceProfile.OnIDPChangeListener, TaskThumbnailChangeListener {
private static final String TAG = RecentsView.class.getSimpleName();
@@ -171,14 +172,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
*/
private final TaskStackChangeListener mTaskStackListener = new TaskStackChangeListener() {
@Override
- public void onTaskSnapshotChanged(int taskId, ThumbnailData snapshot) {
- if (!mHandleTaskStackChanges) {
- return;
- }
- updateThumbnail(taskId, snapshot);
- }
-
- @Override
public void onActivityPinned(String packageName, int userId, int taskId, int stackId) {
if (!mHandleTaskStackChanges) {
return;
@@ -262,7 +255,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
private boolean mOverviewStateEnabled;
private boolean mHandleTaskStackChanges;
- private Runnable mNextPageSwitchRunnable;
private boolean mSwipeDownShouldLaunchApp;
private boolean mTouchDownToStartHome;
private final int mTouchSlop;
@@ -340,6 +332,19 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
return mIsRtl;
}
+ @Override
+ public Task onTaskThumbnailChanged(int taskId, ThumbnailData thumbnailData) {
+ if (mHandleTaskStackChanges) {
+ TaskView taskView = getTaskView(taskId);
+ if (taskView != null) {
+ Task task = taskView.getTask();
+ taskView.getThumbnail().setThumbnail(task, thumbnailData);
+ return task;
+ }
+ }
+ return null;
+ }
+
public TaskView updateThumbnail(int taskId, ThumbnailData thumbnailData) {
TaskView taskView = getTaskView(taskId);
if (taskView != null) {
@@ -371,6 +376,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
mActivity.addMultiWindowModeChangedListener(mMultiWindowModeChangedListener);
ActivityManagerWrapper.getInstance().registerTaskStackListener(mTaskStackListener);
mSyncTransactionApplier = new SyncRtSurfaceTransactionApplierCompat(this);
+ RecentsModel.INSTANCE.get(getContext()).addThumbnailChangeListener(this);
mIdp.addOnChangeListener(this);
}
@@ -382,6 +388,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
mActivity.removeMultiWindowModeChangedListener(mMultiWindowModeChangedListener);
ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mTaskStackListener);
mSyncTransactionApplier = null;
+ RecentsModel.INSTANCE.get(getContext()).removeThumbnailChangeListener(this);
mIdp.removeOnChangeListener(this);
}
@@ -421,17 +428,9 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
updateTaskStackListenerState();
}
- public void setNextPageSwitchRunnable(Runnable r) {
- mNextPageSwitchRunnable = r;
- }
-
@Override
protected void onPageEndTransition() {
super.onPageEndTransition();
- if (mNextPageSwitchRunnable != null) {
- mNextPageSwitchRunnable.run();
- mNextPageSwitchRunnable = null;
- }
if (getNextPage() > 0) {
setSwipeDownShouldLaunchApp(true);
}
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java
index 942214152..fb58c243b 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java
@@ -29,7 +29,6 @@ import android.animation.ObjectAnimator;
import android.animation.TimeInterpolator;
import android.app.ActivityOptions;
import android.content.Context;
-import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Outline;
import android.graphics.drawable.Drawable;
@@ -215,6 +214,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
* Updates this task view to the given {@param task}.
*/
public void bind(Task task) {
+ cancelPendingLoadTasks();
mTask = task;
mSnapshotView.bind(task);
}
@@ -305,15 +305,15 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
if (mTask == null) {
return;
}
+ cancelPendingLoadTasks();
if (visible) {
// These calls are no-ops if the data is already loaded, try and load the high
// resolution thumbnail if the state permits
RecentsModel model = RecentsModel.INSTANCE.get(getContext());
TaskThumbnailCache thumbnailCache = model.getThumbnailCache();
TaskIconCache iconCache = model.getIconCache();
- mThumbnailLoadRequest = thumbnailCache.updateThumbnailInBackground(mTask,
- !thumbnailCache.getHighResLoadingState().isEnabled() /* reducedResolution */,
- (task) -> mSnapshotView.setThumbnail(task, task.thumbnail));
+ mThumbnailLoadRequest = thumbnailCache.updateThumbnailInBackground(
+ mTask, thumbnail -> mSnapshotView.setThumbnail(mTask, thumbnail));
mIconLoadRequest = iconCache.updateIconInBackground(mTask,
(task) -> {
setIcon(task.icon);
@@ -325,17 +325,22 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
});
});
} else {
- if (mThumbnailLoadRequest != null) {
- mThumbnailLoadRequest.cancel();
- }
- if (mIconLoadRequest != null) {
- mIconLoadRequest.cancel();
- }
mSnapshotView.setThumbnail(null, null);
setIcon(null);
}
}
+ private void cancelPendingLoadTasks() {
+ if (mThumbnailLoadRequest != null) {
+ mThumbnailLoadRequest.cancel();
+ mThumbnailLoadRequest = null;
+ }
+ if (mIconLoadRequest != null) {
+ mIconLoadRequest.cancel();
+ mIconLoadRequest = null;
+ }
+ }
+
private boolean showTaskMenu() {
getRecentsView().snapToPage(getRecentsView().indexOfChild(this));
mMenuView = TaskMenuView.showForTask(this);