Post view-drawing so that it happens after applying start transaction
These views were drawing before the transition startTransaction is applied. This can cause deadlocks if there aren't enough buffers and the view blocks the thread since applying the transaction is what frees-up the buffers. Bug: 233625646 Test: run tests and check for fewer ANRs Change-Id: I7d592fe186695cdcde040d4ec315e656e05354e5
This commit is contained in:
@@ -942,7 +942,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
// Re-set the PIP bounds to none.
|
||||
mPipBoundsState.setBounds(new Rect());
|
||||
mPipUiEventLoggerLogger.setTaskInfo(null);
|
||||
mPipMenuController.detach();
|
||||
mMainExecutor.executeDelayed(() -> mPipMenuController.detach(), 0);
|
||||
|
||||
if (info.displayId != Display.DEFAULT_DISPLAY && mOnDisplayIdChangeCallback != null) {
|
||||
mOnDisplayIdChangeCallback.accept(Display.DEFAULT_DISPLAY);
|
||||
|
||||
@@ -715,7 +715,7 @@ public class PipTransition extends PipTransitionController {
|
||||
mSurfaceTransactionHelper
|
||||
.crop(finishTransaction, leash, destinationBounds)
|
||||
.round(finishTransaction, leash, true /* applyCornerRadius */);
|
||||
mPipMenuController.attach(leash);
|
||||
mTransitions.getMainExecutor().executeDelayed(() -> mPipMenuController.attach(leash), 0);
|
||||
|
||||
if (taskInfo.pictureInPictureParams != null
|
||||
&& taskInfo.pictureInPictureParams.isAutoEnterEnabled()
|
||||
|
||||
@@ -28,9 +28,7 @@ import android.app.TaskInfo;
|
||||
import android.content.ComponentName;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.Looper;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.WindowManager;
|
||||
import android.window.TransitionInfo;
|
||||
@@ -56,7 +54,6 @@ public abstract class PipTransitionController implements Transitions.TransitionH
|
||||
protected final ShellTaskOrganizer mShellTaskOrganizer;
|
||||
protected final PipMenuController mPipMenuController;
|
||||
protected final Transitions mTransitions;
|
||||
private final Handler mMainHandler;
|
||||
private final List<PipTransitionCallback> mPipTransitionCallbacks = new ArrayList<>();
|
||||
protected PipTaskOrganizer mPipOrganizer;
|
||||
|
||||
@@ -144,7 +141,6 @@ public abstract class PipTransitionController implements Transitions.TransitionH
|
||||
mPipBoundsAlgorithm = pipBoundsAlgorithm;
|
||||
mPipAnimationController = pipAnimationController;
|
||||
mTransitions = transitions;
|
||||
mMainHandler = new Handler(Looper.getMainLooper());
|
||||
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
|
||||
transitions.addHandler(this);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user