Merge "Reduce flickering when swiping auto-pip with orientation change" into udc-dev

This commit is contained in:
Riddle Hsu
2023-05-12 18:58:32 +00:00
committed by Android (Google) Code Review

View File

@@ -21,6 +21,8 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.ROTATION_UNDEFINED;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.Display.INVALID_DISPLAY;
@@ -959,8 +961,20 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
true /* beforeStopping */)) {
return false;
}
return mController.mAtm.enterPictureInPictureMode(ar, ar.pictureInPictureArgs,
false /* fromClient */, true /* isAutoEnter */);
final int prevMode = ar.getTask().getWindowingMode();
final boolean inPip = mController.mAtm.enterPictureInPictureMode(ar,
ar.pictureInPictureArgs, false /* fromClient */, true /* isAutoEnter */);
final int currentMode = ar.getTask().getWindowingMode();
if (prevMode == WINDOWING_MODE_FULLSCREEN && currentMode == WINDOWING_MODE_PINNED
&& mTransientLaunches != null
&& ar.mDisplayContent.hasTopFixedRotationLaunchingApp()) {
// There will be a display configuration change after finishing this transition.
// Skip dispatching the change for PiP task to avoid its activity drawing for the
// intermediate state which will cause flickering. The final PiP bounds in new
// rotation will be applied by PipTransition.
ar.mDisplayContent.mPinnedTaskController.setEnterPipTransaction(null);
}
return inPip;
}
// Legacy pip-entry (not via isAutoEnterEnabled).