Add shell background executor to bubbles and put unregister call on it

Bug: 224545601
Test: manual - have bubbles and dismiss the stack, make sure nothing
               bad happens
Change-Id: I2c578d10e0bef49534987be3e82700e50ffd1281
Merged-In: I2c578d10e0bef49534987be3e82700e50ffd1281
This commit is contained in:
Mady Mellor
2022-05-11 00:37:31 +00:00
parent 5baf5662ed
commit f8cd073417
3 changed files with 19 additions and 8 deletions

View File

@@ -94,6 +94,8 @@ import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.common.TaskStackListenerCallback; import com.android.wm.shell.common.TaskStackListenerCallback;
import com.android.wm.shell.common.TaskStackListenerImpl; import com.android.wm.shell.common.TaskStackListenerImpl;
import com.android.wm.shell.common.annotations.ShellBackgroundThread;
import com.android.wm.shell.common.annotations.ShellMainThread;
import com.android.wm.shell.draganddrop.DragAndDropController; import com.android.wm.shell.draganddrop.DragAndDropController;
import com.android.wm.shell.onehanded.OneHandedController; import com.android.wm.shell.onehanded.OneHandedController;
import com.android.wm.shell.onehanded.OneHandedTransitionCallback; import com.android.wm.shell.onehanded.OneHandedTransitionCallback;
@@ -156,6 +158,8 @@ public class BubbleController {
private final ShellExecutor mMainExecutor; private final ShellExecutor mMainExecutor;
private final Handler mMainHandler; private final Handler mMainHandler;
private final ShellExecutor mBackgroundExecutor;
private BubbleLogger mLogger; private BubbleLogger mLogger;
private BubbleData mBubbleData; private BubbleData mBubbleData;
@Nullable private BubbleStackView mStackView; @Nullable private BubbleStackView mStackView;
@@ -232,8 +236,9 @@ public class BubbleController {
DisplayController displayController, DisplayController displayController,
Optional<OneHandedController> oneHandedOptional, Optional<OneHandedController> oneHandedOptional,
DragAndDropController dragAndDropController, DragAndDropController dragAndDropController,
ShellExecutor mainExecutor, @ShellMainThread ShellExecutor mainExecutor,
Handler mainHandler, @ShellMainThread Handler mainHandler,
@ShellBackgroundThread ShellExecutor bgExecutor,
TaskViewTransitions taskViewTransitions, TaskViewTransitions taskViewTransitions,
SyncTransactionQueue syncQueue) { SyncTransactionQueue syncQueue) {
BubbleLogger logger = new BubbleLogger(uiEventLogger); BubbleLogger logger = new BubbleLogger(uiEventLogger);
@@ -243,7 +248,7 @@ public class BubbleController {
new BubbleDataRepository(context, launcherApps, mainExecutor), new BubbleDataRepository(context, launcherApps, mainExecutor),
statusBarService, windowManager, windowManagerShellWrapper, launcherApps, statusBarService, windowManager, windowManagerShellWrapper, launcherApps,
logger, taskStackListener, organizer, positioner, displayController, logger, taskStackListener, organizer, positioner, displayController,
oneHandedOptional, dragAndDropController, mainExecutor, mainHandler, oneHandedOptional, dragAndDropController, mainExecutor, mainHandler, bgExecutor,
taskViewTransitions, syncQueue); taskViewTransitions, syncQueue);
} }
@@ -267,8 +272,9 @@ public class BubbleController {
DisplayController displayController, DisplayController displayController,
Optional<OneHandedController> oneHandedOptional, Optional<OneHandedController> oneHandedOptional,
DragAndDropController dragAndDropController, DragAndDropController dragAndDropController,
ShellExecutor mainExecutor, @ShellMainThread ShellExecutor mainExecutor,
Handler mainHandler, @ShellMainThread Handler mainHandler,
@ShellBackgroundThread ShellExecutor bgExecutor,
TaskViewTransitions taskViewTransitions, TaskViewTransitions taskViewTransitions,
SyncTransactionQueue syncQueue) { SyncTransactionQueue syncQueue) {
mContext = context; mContext = context;
@@ -284,6 +290,7 @@ public class BubbleController {
mLogger = bubbleLogger; mLogger = bubbleLogger;
mMainExecutor = mainExecutor; mMainExecutor = mainExecutor;
mMainHandler = mainHandler; mMainHandler = mainHandler;
mBackgroundExecutor = bgExecutor;
mTaskStackListener = taskStackListener; mTaskStackListener = taskStackListener;
mTaskOrganizer = organizer; mTaskOrganizer = organizer;
mSurfaceSynchronizer = synchronizer; mSurfaceSynchronizer = synchronizer;
@@ -719,7 +726,8 @@ public class BubbleController {
try { try {
mAddedToWindowManager = false; mAddedToWindowManager = false;
mContext.unregisterReceiver(mBroadcastReceiver); // Put on background for this binder call, was causing jank
mBackgroundExecutor.execute(() -> mContext.unregisterReceiver(mBroadcastReceiver));
if (mStackView != null) { if (mStackView != null) {
mWindowManager.removeView(mStackView); mWindowManager.removeView(mStackView);
mBubbleData.getOverflow().cleanUpExpandedState(); mBubbleData.getOverflow().cleanUpExpandedState();

View File

@@ -40,6 +40,7 @@ import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.common.SystemWindows; import com.android.wm.shell.common.SystemWindows;
import com.android.wm.shell.common.TaskStackListenerImpl; import com.android.wm.shell.common.TaskStackListenerImpl;
import com.android.wm.shell.common.TransactionPool; import com.android.wm.shell.common.TransactionPool;
import com.android.wm.shell.common.annotations.ShellBackgroundThread;
import com.android.wm.shell.common.annotations.ShellMainThread; import com.android.wm.shell.common.annotations.ShellMainThread;
import com.android.wm.shell.draganddrop.DragAndDropController; import com.android.wm.shell.draganddrop.DragAndDropController;
import com.android.wm.shell.freeform.FreeformTaskListener; import com.android.wm.shell.freeform.FreeformTaskListener;
@@ -112,13 +113,15 @@ public class WMShellModule {
DragAndDropController dragAndDropController, DragAndDropController dragAndDropController,
@ShellMainThread ShellExecutor mainExecutor, @ShellMainThread ShellExecutor mainExecutor,
@ShellMainThread Handler mainHandler, @ShellMainThread Handler mainHandler,
@ShellBackgroundThread ShellExecutor bgExecutor,
TaskViewTransitions taskViewTransitions, TaskViewTransitions taskViewTransitions,
SyncTransactionQueue syncQueue) { SyncTransactionQueue syncQueue) {
return BubbleController.create(context, null /* synchronizer */, return BubbleController.create(context, null /* synchronizer */,
floatingContentCoordinator, statusBarService, windowManager, floatingContentCoordinator, statusBarService, windowManager,
windowManagerShellWrapper, launcherApps, taskStackListener, windowManagerShellWrapper, launcherApps, taskStackListener,
uiEventLogger, organizer, displayController, oneHandedOptional, uiEventLogger, organizer, displayController, oneHandedOptional,
dragAndDropController, mainExecutor, mainHandler, taskViewTransitions, syncQueue); dragAndDropController, mainExecutor, mainHandler, bgExecutor,
taskViewTransitions, syncQueue);
} }
// //

View File

@@ -69,7 +69,7 @@ public class TestableBubbleController extends BubbleController {
statusBarService, windowManager, windowManagerShellWrapper, launcherApps, statusBarService, windowManager, windowManagerShellWrapper, launcherApps,
bubbleLogger, taskStackListener, shellTaskOrganizer, positioner, displayController, bubbleLogger, taskStackListener, shellTaskOrganizer, positioner, displayController,
oneHandedOptional, dragAndDropController, shellMainExecutor, shellMainHandler, oneHandedOptional, dragAndDropController, shellMainExecutor, shellMainHandler,
taskViewTransitions, syncQueue); new SyncExecutor(), taskViewTransitions, syncQueue);
setInflateSynchronously(true); setInflateSynchronously(true);
initialize(); initialize();
} }