Merge "Fixes broken callbacks in RecentsAnimationCallbacks" into udc-qpr-dev am: a6f089c5fc

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/24589979

Change-Id: I790f16e73181bd299e9e229401015784588bd245
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Sunny Goyal
2023-09-02 00:48:15 +00:00
committed by Automerger Merge Worker

View File

@@ -125,13 +125,14 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
// If mCallbacks still != null, that means we are getting this startRecentsAnimation()
// before the previous one got onRecentsAnimationStart(). In that case, cleanup the
// previous animation so it doesn't mess up/listen to state changes in this animation.
cleanUpRecentsAnimation();
cleanUpRecentsAnimation(mCallbacks);
}
final BaseActivityInterface activityInterface = gestureState.getActivityInterface();
mLastGestureState = gestureState;
mCallbacks = new RecentsAnimationCallbacks(SystemUiProxy.INSTANCE.get(mCtx),
activityInterface.allowMinimizeSplitScreen());
RecentsAnimationCallbacks newCallbacks = new RecentsAnimationCallbacks(
SystemUiProxy.INSTANCE.get(mCtx), activityInterface.allowMinimizeSplitScreen());
mCallbacks = newCallbacks;
mCallbacks.addListener(new RecentsAnimationCallbacks.RecentsAnimationListener() {
@Override
public void onRecentsAnimationStart(RecentsAnimationController controller,
@@ -157,12 +158,12 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
@Override
public void onRecentsAnimationCanceled(HashMap<Integer, ThumbnailData> thumbnailDatas) {
cleanUpRecentsAnimation();
cleanUpRecentsAnimation(newCallbacks);
}
@Override
public void onRecentsAnimationFinished(RecentsAnimationController controller) {
cleanUpRecentsAnimation();
cleanUpRecentsAnimation(newCallbacks);
}
@Override
@@ -334,7 +335,6 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
if (mController != null) {
ActiveGestureLog.INSTANCE.addLog(
/* event= */ "finishRunningRecentsAnimation", toHome);
mCallbacks.notifyAnimationCanceled();
if (forceFinish) {
mController.finishController(toHome, null, false /* sendUserLeaveHint */,
true /* forceFinish */);
@@ -343,7 +343,6 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
? mController::finishAnimationToHome
: mController::finishAnimationToApp);
}
cleanUpRecentsAnimation();
}
}
@@ -370,7 +369,12 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
/**
* Cleans up the recents animation entirely.
*/
private void cleanUpRecentsAnimation() {
private void cleanUpRecentsAnimation(RecentsAnimationCallbacks targetCallbacks) {
if (mCallbacks != targetCallbacks) {
ActiveGestureLog.INSTANCE.addLog(
/* event= */ "cleanUpRecentsAnimation skipped due to wrong callbacks");
return;
}
ActiveGestureLog.INSTANCE.addLog(/* event= */ "cleanUpRecentsAnimation");
if (mLiveTileCleanUpHandler != null) {
mLiveTileCleanUpHandler.run();