diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayContent.java | 7 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 00dc3ec4f4d0..17ea48e9d12a 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -2007,7 +2007,12 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp } // Update directly because the app which will change the orientation of display is ready. if (mDisplayRotation.updateOrientation(getOrientation(), false /* forceUpdate */)) { - sendNewConfiguration(); + // Run rotation change on display thread. See Transition#shouldApplyOnDisplayThread(). + mWmService.mH.post(() -> { + synchronized (mWmService.mGlobalLock) { + sendNewConfiguration(); + } + }); return; } if (mRemoteDisplayChangeController.isWaitingForRemoteDisplayChange()) { diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java index 2c88ed2db2d6..7356b4376e8a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java @@ -1717,6 +1717,7 @@ public class DisplayContentTests extends WindowTestsBase { // The display should be rotated after the launch is finished. doReturn(false).when(app).isAnimating(anyInt(), anyInt()); mDisplayContent.mAppTransition.notifyAppTransitionFinishedLocked(app.token); + waitHandlerIdle(mWm.mH); mStatusBarWindow.finishSeamlessRotation(t); mNavBarWindow.finishSeamlessRotation(t); |