Merge "Disable fixed rotation for starting window with ime surface" into sc-dev

This commit is contained in:
Riddle Hsu
2021-04-29 04:39:44 +00:00
committed by Android (Google) Code Review
4 changed files with 18 additions and 1 deletions

View File

@@ -1538,6 +1538,11 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
// to cover the activity configuration change.
return false;
}
if (r.mStartingData != null && r.mStartingData.hasImeSurface()) {
// Currently it is unknown that when will IME window be ready. Reject the case to
// avoid flickering by showing IME in inconsistent orientation.
return false;
}
if (checkOpening) {
if (!mAppTransition.isTransitionSet() || !mOpeningApps.contains(r)) {
// Apply normal rotation animation in case of the activity set different requested

View File

@@ -39,4 +39,9 @@ class SnapshotStartingData extends StartingData {
return mService.mStartingSurfaceController.createTaskSnapshotSurface(activity,
mSnapshot);
}
@Override
boolean hasImeSurface() {
return mSnapshot.hasImeSurface();
}
}

View File

@@ -40,4 +40,9 @@ public abstract class StartingData {
* {@link StartingSurface#remove}
*/
abstract StartingSurface createStartingSurface(ActivityRecord activity);
/** @see android.window.TaskSnapshot#hasImeSurface() */
boolean hasImeSurface() {
return false;
}
}

View File

@@ -118,7 +118,9 @@ public class StartingSurfaceController {
return null;
}
if (topFullscreenActivity.getWindowConfiguration().getRotation()
!= taskSnapshot.getRotation()) {
!= taskSnapshot.getRotation()
// Use normal rotation to avoid flickering of IME window in old orientation.
&& !taskSnapshot.hasImeSurface()) {
// The snapshot should have been checked by ActivityRecord#isSnapshotCompatible
// that the activity will be updated to the same rotation as the snapshot. Since
// the transition is not started yet, fixed rotation transform needs to be applied