diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2019-02-26 13:05:31 -0800 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2019-02-26 13:05:57 -0800 |
commit | 327e01d98c869a83a9c80cdab32f1add3f87713b (patch) | |
tree | ae97a5a31022fca1f239f23b40fa37b833613d57 /quickstep/recents_ui_overrides | |
parent | b04dabf7efe49a69b3663734840cf772fd106804 (diff) | |
download | android_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.java | 35 | ||||
-rw-r--r-- | quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java | 25 |
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); |