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
This commit is contained in:
Vinit Nayak
2022-03-17 16:26:56 -07:00
parent 763fd21b34
commit 38397e46cf

View File

@@ -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));
}