Merge changes from topic "am-b0c712d1-c83b-40f2-a3f1-53f7e2d67e9f" into ub-launcher3-master
* changes:
[automerger] Handling activity recreate due to configuration changes in the middle of the long fling am: 16593d7932
Handling activity recreate due to configuration changes in the middle of the long fling
diff --git a/quickstep/src/com/android/quickstep/ActivityControlHelper.java b/quickstep/src/com/android/quickstep/ActivityControlHelper.java
index 529a765..85106ba 100644
--- a/quickstep/src/com/android/quickstep/ActivityControlHelper.java
+++ b/quickstep/src/com/android/quickstep/ActivityControlHelper.java
@@ -182,8 +182,8 @@
return new AnimationFactory() {
@Override
public void createActivityController(long transitionLength) {
- createActivityControllerInternal(activity, activityVisible, transitionLength,
- callback);
+ createActivityControllerInternal(activity, activityVisible, startState,
+ transitionLength, callback);
}
@Override
@@ -194,10 +194,12 @@
}
private void createActivityControllerInternal(Launcher activity, boolean wasVisible,
- long transitionLength, Consumer<AnimatorPlaybackController> callback) {
+ LauncherState startState, long transitionLength,
+ Consumer<AnimatorPlaybackController> callback) {
if (wasVisible) {
DeviceProfile dp = activity.getDeviceProfile();
long accuracy = 2 * Math.max(dp.widthPx, dp.heightPx);
+ activity.getStateManager().goToState(startState, false);
callback.accept(activity.getStateManager()
.createAnimationToNewWorkspace(OVERVIEW, accuracy));
return;
diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
index 4e17b4b..9fe1018 100644
--- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -163,10 +163,12 @@
private final Handler mMainThreadHandler = new Handler(Looper.getMainLooper());
private final Context mContext;
- private final int mRunningTaskId;
private final ActivityControlHelper<T> mActivityControlHelper;
private final ActivityInitListener mActivityInitListener;
+ private final int mRunningTaskId;
+ private ThumbnailData mTaskSnapshot;
+
private MultiStateCallback mStateCallback;
private AnimatorPlaybackController mLauncherTransitionController;
@@ -705,9 +707,11 @@
synchronized (mRecentsAnimationWrapper) {
if (mRecentsAnimationWrapper.controller != null) {
// Update the screenshot of the task
- ThumbnailData thumbnail =
- mRecentsAnimationWrapper.controller.screenshotTask(mRunningTaskId);
- final TaskView taskView = mRecentsView.updateThumbnail(mRunningTaskId, thumbnail);
+ if (mTaskSnapshot == null) {
+ mTaskSnapshot = mRecentsAnimationWrapper.controller
+ .screenshotTask(mRunningTaskId);
+ }
+ TaskView taskView = mRecentsView.updateThumbnail(mRunningTaskId, mTaskSnapshot);
mRecentsView.setRunningTaskHidden(false);
if (taskView != null) {
// Defer finishing the animation until the next launcher frame with the
@@ -880,10 +884,11 @@
private void onLongSwipeGestureFinishUi(float velocity, boolean isFling) {
if (!mUiLongSwipeMode || mLongSwipeController == null) {
+ mUiLongSwipeMode = false;
handleNormalGestureEnd(velocity, isFling);
return;
}
-
+ mUiLongSwipeMode = false;
finishCurrentTransitionToHome();
mLongSwipeController.end(velocity, isFling,
() -> setStateOnUiThread(STATE_HANDLER_INVALIDATED));