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:
@@ -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();
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user