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

Commit c679f3d8 authored by Mady Mellor's avatar Mady Mellor
Browse files

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
parent a2f6807a
Loading
Loading
Loading
Loading
+14 −6
Original line number Diff line number Diff line
@@ -96,6 +96,8 @@ import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.common.TaskStackListenerCallback;
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.onehanded.OneHandedController;
import com.android.wm.shell.onehanded.OneHandedTransitionCallback;
@@ -158,6 +160,8 @@ public class BubbleController {
    private final ShellExecutor mMainExecutor;
    private final Handler mMainHandler;

    private final ShellExecutor mBackgroundExecutor;

    private BubbleLogger mLogger;
    private BubbleData mBubbleData;
    @Nullable private BubbleStackView mStackView;
@@ -234,8 +238,9 @@ public class BubbleController {
            DisplayController displayController,
            Optional<OneHandedController> oneHandedOptional,
            DragAndDropController dragAndDropController,
            ShellExecutor mainExecutor,
            Handler mainHandler,
            @ShellMainThread ShellExecutor mainExecutor,
            @ShellMainThread Handler mainHandler,
            @ShellBackgroundThread ShellExecutor bgExecutor,
            TaskViewTransitions taskViewTransitions,
            SyncTransactionQueue syncQueue) {
        BubbleLogger logger = new BubbleLogger(uiEventLogger);
@@ -245,7 +250,7 @@ public class BubbleController {
                new BubbleDataRepository(context, launcherApps, mainExecutor),
                statusBarService, windowManager, windowManagerShellWrapper, launcherApps,
                logger, taskStackListener, organizer, positioner, displayController,
                oneHandedOptional, dragAndDropController, mainExecutor, mainHandler,
                oneHandedOptional, dragAndDropController, mainExecutor, mainHandler, bgExecutor,
                taskViewTransitions, syncQueue);
    }

@@ -269,8 +274,9 @@ public class BubbleController {
            DisplayController displayController,
            Optional<OneHandedController> oneHandedOptional,
            DragAndDropController dragAndDropController,
            ShellExecutor mainExecutor,
            Handler mainHandler,
            @ShellMainThread ShellExecutor mainExecutor,
            @ShellMainThread Handler mainHandler,
            @ShellBackgroundThread ShellExecutor bgExecutor,
            TaskViewTransitions taskViewTransitions,
            SyncTransactionQueue syncQueue) {
        mContext = context;
@@ -286,6 +292,7 @@ public class BubbleController {
        mLogger = bubbleLogger;
        mMainExecutor = mainExecutor;
        mMainHandler = mainHandler;
        mBackgroundExecutor = bgExecutor;
        mTaskStackListener = taskStackListener;
        mTaskOrganizer = organizer;
        mSurfaceSynchronizer = synchronizer;
@@ -725,7 +732,8 @@ public class BubbleController {

        try {
            mAddedToWindowManager = false;
            mContext.unregisterReceiver(mBroadcastReceiver);
            // Put on background for this binder call, was causing jank
            mBackgroundExecutor.execute(() -> mContext.unregisterReceiver(mBroadcastReceiver));
            if (mStackView != null) {
                mWindowManager.removeView(mStackView);
                mBubbleData.getOverflow().cleanUpExpandedState();
+4 −1
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ import com.android.wm.shell.common.SystemWindows;
import com.android.wm.shell.common.TaskStackListenerImpl;
import com.android.wm.shell.common.TransactionPool;
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.draganddrop.DragAndDropController;
import com.android.wm.shell.freeform.FreeformTaskListener;
@@ -114,13 +115,15 @@ public class WMShellModule {
            DragAndDropController dragAndDropController,
            @ShellMainThread ShellExecutor mainExecutor,
            @ShellMainThread Handler mainHandler,
            @ShellBackgroundThread ShellExecutor bgExecutor,
            TaskViewTransitions taskViewTransitions,
            SyncTransactionQueue syncQueue) {
        return BubbleController.create(context, null /* synchronizer */,
                floatingContentCoordinator, statusBarService, windowManager,
                windowManagerShellWrapper, launcherApps, taskStackListener,
                uiEventLogger, organizer, displayController, oneHandedOptional,
                dragAndDropController, mainExecutor, mainHandler, taskViewTransitions, syncQueue);
                dragAndDropController, mainExecutor, mainHandler, bgExecutor,
                taskViewTransitions, syncQueue);
    }

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