diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index f1acee5031d87..47e0355671522 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -26,6 +26,7 @@ import static android.app.WindowConfiguration.isSplitScreenWindowingMode; import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.os.PowerManager.DRAW_WAKE_LOCK; import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER; +import static android.view.InsetsState.ITYPE_IME; import static android.view.SurfaceControl.Transaction; import static android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; import static android.view.View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; @@ -756,6 +757,12 @@ class WindowState extends WindowContainer implements WindowManagerP oldRotation = mPendingSeamlessRotate.getOldRotation(); } + // Skip performing seamless rotation when the controlled insets is IME with visible state. + if (mControllableInsetProvider != null + && mControllableInsetProvider.getSource().getType() == ITYPE_IME) { + return; + } + if (mForceSeamlesslyRotate || requested) { if (mControllableInsetProvider != null) { mControllableInsetProvider.startSeamlessRotation();