Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98fbe25d authored by Winson Chung's avatar Winson Chung
Browse files

Try to handle side-task launches even if not fully transitioned to overview

- The launcher state does not transition from Background -> Overview
  until the overview animation finishes, and if a side task is launched
  before that happens, then we receive onTaskAppeared() but
  isInLiveTileMode() is false, which results in a state where no
  animation of the side task surface is run, and the recents animation
  is not finished.  In these cases, if we've already calculated the
  end target is RECENTS, then we can still animate the side task
- Adding some more gesture logs to indicate side task launched (or didn't)

Bug: 279114961
Test: Go to overview and launch next task

Change-Id: I23eac8721da801f14cc95fc6781a0ef9f0355cc0
parent 64c83470
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2260,6 +2260,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
                                        targetCompat.taskId == mGestureState.getLastStartedTaskId())
                                .findFirst();
                if (!taskTargetOptional.isPresent()) {
                    ActiveGestureLog.INSTANCE.addLog("No appeared task matching started task id");
                    finishRecentsAnimationOnTasksAppeared(null /* onFinishComplete */);
                    return;
                }
@@ -2267,6 +2268,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
                TaskView taskView = mRecentsView == null
                        ? null : mRecentsView.getTaskViewByTaskId(taskTarget.taskId);
                if (taskView == null || !taskView.getThumbnail().shouldShowSplashView()) {
                    ActiveGestureLog.INSTANCE.addLog("Invalid task view splash state");
                    finishRecentsAnimationOnTasksAppeared(null /* onFinishComplete */);
                    return;
                }
+7 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;

import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
import static com.android.quickstep.GestureState.GestureEndTarget.RECENTS;
import static com.android.quickstep.GestureState.STATE_RECENTS_ANIMATION_INITIALIZED;
import static com.android.quickstep.GestureState.STATE_RECENTS_ANIMATION_STARTED;
import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.START_RECENTS_ANIMATION;
@@ -174,16 +175,21 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
                if (nonAppTargets == null) {
                    nonAppTargets = new RemoteAnimationTarget[0];
                }
                if (activityInterface.isInLiveTileMode()
                if ((activityInterface.isInLiveTileMode()
                            || mLastGestureState.getEndTarget() == RECENTS)
                        && activityInterface.getCreatedActivity() != null) {
                    RecentsView recentsView =
                            activityInterface.getCreatedActivity().getOverviewPanel();
                    if (recentsView != null) {
                        ActiveGestureLog.INSTANCE.addLog("Launching side task id="
                                + appearedTaskTarget.taskId);
                        recentsView.launchSideTaskInLiveTileMode(appearedTaskTarget.taskId,
                                appearedTaskTargets,
                                new RemoteAnimationTarget[0] /* wallpaper */,
                                nonAppTargets /* nonApps */);
                        return;
                    } else {
                        ActiveGestureLog.INSTANCE.addLog("Unable to launch side task (no recents)");
                    }
                } else if (nonAppTargets.length > 0) {
                    TaskViewUtils.createSplitAuxiliarySurfacesAnimator(nonAppTargets /* nonApps */,