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

Commit 0844f2e8 authored by Schneider Victor-tulias's avatar Schneider Victor-tulias
Browse files

Return to home when overview command fails.

Returning a runnable list that doesn't get run later causes the overview command to be added to the pending command queue, but never gets removed. This causes following overview (and home on tablets) commands not to respond.

Test: forcefully caused the error condition programmatically; checked the queue is cleared and the user is sent home.
Fixes: 255851262
Change-Id: I9d2f54960c54963b1e7480a597d05911201c152b
parent 1d253ac8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ public class OverviewCommandHelper {
     */
    @BinderThread
    public void addCommand(int type) {
        if (mPendingCommands.size() > MAX_QUEUE_SIZE) {
        if (mPendingCommands.size() >= MAX_QUEUE_SIZE) {
            return;
        }
        CommandInfo cmd = new CommandInfo(type);
+1 −1
Original line number Diff line number Diff line
@@ -288,7 +288,7 @@ public class DesktopTaskView extends TaskView {
    public RunnableList launchTasks() {
        SystemUiProxy.INSTANCE.get(getContext()).showDesktopApps();
        getRecentsView().startHome();
        return new RunnableList();
        return null;
    }

    @Nullable
+10 −4
Original line number Diff line number Diff line
@@ -725,13 +725,14 @@ public class TaskView extends FrameLayout implements Reusable {
    /**
     * Launch of the current task (both live and inactive tasks) with an animation.
     */
    @Nullable
    public RunnableList launchTasks() {
        RecentsView recentsView = getRecentsView();
        RemoteTargetHandle[] remoteTargetHandles = recentsView.mRemoteTargetHandles;
        RunnableList runnableList = new RunnableList();
        if (isRunningTask() && remoteTargetHandles != null) {
            if (!mIsClickableAsLiveTile) {
                return runnableList;
                Log.e(TAG, "TaskView is not clickable as a live tile; returning to home.");
                return null;
            }

            mIsClickableAsLiveTile = false;
@@ -756,11 +757,16 @@ public class TaskView extends FrameLayout implements Reusable {
            if (targets == null) {
                // If the recents animation is cancelled somehow between the parent if block and
                // here, try to launch the task as a non live tile task.
                launchTaskAnimated();
                RunnableList runnableList = launchTaskAnimated();
                if (runnableList == null) {
                    Log.e(TAG, "Recents animation cancelled and cannot launch task as non-live tile"
                            + "; returning to home");
                }
                mIsClickableAsLiveTile = true;
                return runnableList;
            }

            RunnableList runnableList = new RunnableList();
            AnimatorSet anim = new AnimatorSet();
            TaskViewUtils.composeRecentsLaunchAnimator(
                    anim, this, targets.apps,
@@ -797,10 +803,10 @@ public class TaskView extends FrameLayout implements Reusable {
            });
            anim.start();
            recentsView.onTaskLaunchedInLiveTileMode();
            return runnableList;
        } else {
            return launchTaskAnimated();
        }
        return runnableList;
    }

    /**