Merge "Add shell background executor to bubbles and put unregister call on it" into tm-dev

This commit is contained in:
Mady Mellor
2022-05-13 22:28:15 +00:00
committed by Android (Google) Code Review
3 changed files with 19 additions and 8 deletions

View File

@@ -96,6 +96,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;
@@ -158,6 +160,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;
@@ -234,8 +238,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);
@@ -245,7 +250,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);
} }
@@ -269,8 +274,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;
@@ -286,6 +292,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;
@@ -725,7 +732,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

@@ -43,6 +43,7 @@ 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.ChoreographerSfVsync; import com.android.wm.shell.common.annotations.ChoreographerSfVsync;
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;
@@ -114,13 +115,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();
} }