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

Commit 38397e46 authored by Vinit Nayak's avatar Vinit Nayak
Browse files

Limit the number of commands in OverviewCommandHelper

* Rapidly tapping recents button in 3 button nav
puts launcher in a strange state.
Reproing and understanding that state is complex
since so many state transitions are rapidly happening.
* Easier to limit the number of commands a user
will perform for valid use-cases.

Fixes: 207680265
Test: Rapidly pressing recents when unfolded
doesn't show live tile task on workspace.

Change-Id: I7db849e83c2cafc37a419e189479283f2057bde6
parent 763fd21b
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -54,6 +54,12 @@ public class OverviewCommandHelper {
    public static final int TYPE_TOGGLE = 4;
    public static final int TYPE_HOME = 5;

    /**
     * Use case for needing a queue is double tapping recents button in 3 button nav.
     * Size of 2 should be enough. We'll toss in one more because we're kind hearted.
     */
    private final static int MAX_QUEUE_SIZE = 3;

    private static final String TRANSITION_NAME = "Transition:toOverview";

    private final TouchInteractionService mService;
@@ -105,10 +111,15 @@ public class OverviewCommandHelper {
    }

    /**
     * Adds a command to be executed next, after all pending tasks are completed
     * Adds a command to be executed next, after all pending tasks are completed.
     * Max commands that can be queued is {@link #MAX_QUEUE_SIZE}.
     * Requests after reaching that limit will be silently dropped.
     */
    @BinderThread
    public void addCommand(int type) {
        if (mPendingCommands.size() > MAX_QUEUE_SIZE) {
            return;
        }
        CommandInfo cmd = new CommandInfo(type);
        MAIN_EXECUTOR.execute(() -> addCommand(cmd));
    }