diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayChangeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayChangeController.java index ae1f43320c8b4..72702e7c2b88c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayChangeController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayChangeController.java @@ -79,7 +79,7 @@ public class DisplayChangeController { } /** Query all listeners for changes that should happen on display change. */ - public void dispatchOnDisplayChange(WindowContainerTransaction outWct, int displayId, + void dispatchOnDisplayChange(WindowContainerTransaction outWct, int displayId, int fromRotation, int toRotation, DisplayAreaInfo newDisplayAreaInfo) { for (OnDisplayChangingListener c : mDisplayChangeListener) { c.onDisplayChange(displayId, fromRotation, toRotation, newDisplayAreaInfo, outWct); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayController.java index f07ea751b044b..8353900be0efc 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayController.java @@ -29,6 +29,7 @@ import android.view.Display; import android.view.IDisplayWindowListener; import android.view.IWindowManager; import android.view.InsetsState; +import android.window.WindowContainerTransaction; import androidx.annotation.BinderThread; @@ -85,11 +86,6 @@ public class DisplayController { } } - /** Get the DisplayChangeController. */ - public DisplayChangeController getChangeController() { - return mChangeController; - } - /** * Gets a display by id from DisplayManager. */ @@ -195,6 +191,26 @@ public class DisplayController { } } + + /** Called when a display rotate requested. */ + public void onDisplayRotateRequested(WindowContainerTransaction wct, int displayId, + int fromRotation, int toRotation) { + synchronized (mDisplays) { + final DisplayRecord dr = mDisplays.get(displayId); + if (dr == null) { + Slog.w(TAG, "Skipping Display rotate on non-added display."); + return; + } + + if (dr.mDisplayLayout != null) { + dr.mDisplayLayout.rotateTo(dr.mContext.getResources(), toRotation); + } + + mChangeController.dispatchOnDisplayChange( + wct, displayId, fromRotation, toRotation, null /* newDisplayAreaInfo */); + } + } + private void onDisplayConfigurationChanged(int displayId, Configuration newConfig) { synchronized (mDisplays) { final DisplayRecord dr = mDisplays.get(displayId); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java index 31ca16c30bee9..2327d86ab618b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java @@ -1085,9 +1085,8 @@ public class Transitions implements RemoteCallable, if (wct == null) { wct = new WindowContainerTransaction(); } - mDisplayController.getChangeController().dispatchOnDisplayChange(wct, - change.getDisplayId(), change.getStartRotation(), - change.getEndRotation(), null /* newDisplayAreaInfo */); + mDisplayController.onDisplayRotateRequested(wct, change.getDisplayId(), + change.getStartRotation(), change.getEndRotation()); } } }