Merge "Fix updateRecentTasksSplitPair unexpectly" into sc-v2-dev am: 588771a9de
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16564588 Change-Id: Iee0b86019c26a215834b0d34b9778083c38f3dec
This commit is contained in:
@@ -367,6 +367,8 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
float splitRatio, RemoteAnimationAdapter adapter) {
|
float splitRatio, RemoteAnimationAdapter adapter) {
|
||||||
// Init divider first to make divider leash for remote animation target.
|
// Init divider first to make divider leash for remote animation target.
|
||||||
setDividerVisibility(true /* visible */);
|
setDividerVisibility(true /* visible */);
|
||||||
|
// Set false to avoid record new bounds with old task still on top;
|
||||||
|
mShouldUpdateRecents = false;
|
||||||
final WindowContainerTransaction wct = new WindowContainerTransaction();
|
final WindowContainerTransaction wct = new WindowContainerTransaction();
|
||||||
final WindowContainerTransaction evictWct = new WindowContainerTransaction();
|
final WindowContainerTransaction evictWct = new WindowContainerTransaction();
|
||||||
prepareEvictChildTasks(SPLIT_POSITION_TOP_OR_LEFT, evictWct);
|
prepareEvictChildTasks(SPLIT_POSITION_TOP_OR_LEFT, evictWct);
|
||||||
@@ -393,6 +395,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
@Override
|
@Override
|
||||||
public void onAnimationFinished() throws RemoteException {
|
public void onAnimationFinished() throws RemoteException {
|
||||||
mIsDividerRemoteAnimating = false;
|
mIsDividerRemoteAnimating = false;
|
||||||
|
mShouldUpdateRecents = true;
|
||||||
mSyncQueue.queue(evictWct);
|
mSyncQueue.queue(evictWct);
|
||||||
mSyncQueue.runInSync(t -> applyDividerVisibility(t));
|
mSyncQueue.runInSync(t -> applyDividerVisibility(t));
|
||||||
finishedCallback.onAnimationFinished();
|
finishedCallback.onAnimationFinished();
|
||||||
@@ -416,6 +419,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
@Override
|
@Override
|
||||||
public void onAnimationCancelled() {
|
public void onAnimationCancelled() {
|
||||||
mIsDividerRemoteAnimating = false;
|
mIsDividerRemoteAnimating = false;
|
||||||
|
mShouldUpdateRecents = true;
|
||||||
mSyncQueue.queue(evictWct);
|
mSyncQueue.queue(evictWct);
|
||||||
mSyncQueue.runInSync(t -> applyDividerVisibility(t));
|
mSyncQueue.runInSync(t -> applyDividerVisibility(t));
|
||||||
try {
|
try {
|
||||||
@@ -782,7 +786,9 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
mLogger.logSideStageAppChange(getSideStagePosition(), mSideStage.getTopChildTaskUid(),
|
mLogger.logSideStageAppChange(getSideStagePosition(), mSideStage.getTopChildTaskUid(),
|
||||||
mSplitLayout.isLandscape());
|
mSplitLayout.isLandscape());
|
||||||
}
|
}
|
||||||
|
if (present && visible) {
|
||||||
updateRecentTasksSplitPair();
|
updateRecentTasksSplitPair();
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = mListeners.size() - 1; i >= 0; --i) {
|
for (int i = mListeners.size() - 1; i >= 0; --i) {
|
||||||
mListeners.get(i).onTaskStageChanged(taskId, stage, visible);
|
mListeners.get(i).onTaskStageChanged(taskId, stage, visible);
|
||||||
@@ -798,7 +804,6 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
if (!mShouldUpdateRecents) {
|
if (!mShouldUpdateRecents) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mRecentTasks.ifPresent(recentTasks -> {
|
mRecentTasks.ifPresent(recentTasks -> {
|
||||||
Rect topLeftBounds = mSplitLayout.getBounds1();
|
Rect topLeftBounds = mSplitLayout.getBounds1();
|
||||||
Rect bottomRightBounds = mSplitLayout.getBounds2();
|
Rect bottomRightBounds = mSplitLayout.getBounds2();
|
||||||
|
|||||||
Reference in New Issue
Block a user