Merge "Update display layout when requesting display rotate" into udc-dev am: 445045eb25

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23659916

Change-Id: Ia06f9496258462ad0fbafa1b70a06c9f4a481a60
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jerry Chang
2023-06-13 13:11:00 +00:00
committed by Automerger Merge Worker
3 changed files with 24 additions and 9 deletions

View File

@@ -79,7 +79,7 @@ public class DisplayChangeController {
} }
/** Query all listeners for changes that should happen on display change. */ /** 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) { int fromRotation, int toRotation, DisplayAreaInfo newDisplayAreaInfo) {
for (OnDisplayChangingListener c : mDisplayChangeListener) { for (OnDisplayChangingListener c : mDisplayChangeListener) {
c.onDisplayChange(displayId, fromRotation, toRotation, newDisplayAreaInfo, outWct); c.onDisplayChange(displayId, fromRotation, toRotation, newDisplayAreaInfo, outWct);

View File

@@ -29,6 +29,7 @@ import android.view.Display;
import android.view.IDisplayWindowListener; import android.view.IDisplayWindowListener;
import android.view.IWindowManager; import android.view.IWindowManager;
import android.view.InsetsState; import android.view.InsetsState;
import android.window.WindowContainerTransaction;
import androidx.annotation.BinderThread; 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. * 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) { private void onDisplayConfigurationChanged(int displayId, Configuration newConfig) {
synchronized (mDisplays) { synchronized (mDisplays) {
final DisplayRecord dr = mDisplays.get(displayId); final DisplayRecord dr = mDisplays.get(displayId);

View File

@@ -1085,9 +1085,8 @@ public class Transitions implements RemoteCallable<Transitions>,
if (wct == null) { if (wct == null) {
wct = new WindowContainerTransaction(); wct = new WindowContainerTransaction();
} }
mDisplayController.getChangeController().dispatchOnDisplayChange(wct, mDisplayController.onDisplayRotateRequested(wct, change.getDisplayId(),
change.getDisplayId(), change.getStartRotation(), change.getStartRotation(), change.getEndRotation());
change.getEndRotation(), null /* newDisplayAreaInfo */);
} }
} }
} }