ViewRootImpl: Fix display install orientation query for transform hint
Apps did not get the correct transform hint when moving between displays because the display install orientation was not updated correctly. Fix by always querying the install orientation instead of relying on the cached value. Bug: 251360251 Test: move app between displays, rotate, check final buffer transforms Change-Id: Icd463de9407b3f22cbea510d65c8d8c1b1c986d6
This commit is contained in:
@@ -283,7 +283,6 @@ public abstract class WallpaperService extends Service {
|
||||
private Display mDisplay;
|
||||
private Context mDisplayContext;
|
||||
private int mDisplayState;
|
||||
private @Surface.Rotation int mDisplayInstallOrientation;
|
||||
private float mWallpaperDimAmount = 0.05f;
|
||||
private float mPreviousWallpaperDimAmount = mWallpaperDimAmount;
|
||||
private float mDefaultDimAmount = mWallpaperDimAmount;
|
||||
@@ -1158,7 +1157,7 @@ public abstract class WallpaperService extends Service {
|
||||
mSurfaceControl, mInsetsState, mTempControls, mSyncSeqIdBundle);
|
||||
|
||||
final int transformHint = SurfaceControl.rotationToBufferTransform(
|
||||
(mDisplayInstallOrientation + mDisplay.getRotation()) % 4);
|
||||
(mDisplay.getInstallOrientation() + mDisplay.getRotation()) % 4);
|
||||
mSurfaceControl.setTransformHint(transformHint);
|
||||
WindowLayout.computeSurfaceSize(mLayout, maxBounds, mWidth, mHeight,
|
||||
mWinFrames.frame, false /* dragResizing */, mSurfaceSize);
|
||||
@@ -1419,7 +1418,6 @@ public abstract class WallpaperService extends Service {
|
||||
mWallpaperDimAmount = mDefaultDimAmount;
|
||||
mPreviousWallpaperDimAmount = mWallpaperDimAmount;
|
||||
mDisplayState = mDisplay.getState();
|
||||
mDisplayInstallOrientation = mDisplay.getInstallOrientation();
|
||||
|
||||
if (DEBUG) Log.v(TAG, "onCreate(): " + this);
|
||||
onCreate(mSurfaceHolder);
|
||||
|
||||
@@ -428,8 +428,6 @@ public final class ViewRootImpl implements ViewParent,
|
||||
final DisplayManager mDisplayManager;
|
||||
final String mBasePackageName;
|
||||
|
||||
private @Surface.Rotation int mDisplayInstallOrientation;
|
||||
|
||||
final int[] mTmpLocation = new int[2];
|
||||
|
||||
final TypedValue mTmpValue = new TypedValue();
|
||||
@@ -1134,7 +1132,6 @@ public final class ViewRootImpl implements ViewParent,
|
||||
if (mView == null) {
|
||||
mView = view;
|
||||
|
||||
mDisplayInstallOrientation = mDisplay.getInstallOrientation();
|
||||
mViewLayoutDirectionInitial = mView.getRawLayoutDirection();
|
||||
mFallbackEventHandler.setView(view);
|
||||
mWindowAttributes.copyFrom(attrs);
|
||||
@@ -1905,7 +1902,6 @@ public final class ViewRootImpl implements ViewParent,
|
||||
updateInternalDisplay(displayId, mView.getResources());
|
||||
mImeFocusController.onMovedToDisplay();
|
||||
mAttachInfo.mDisplayState = mDisplay.getState();
|
||||
mDisplayInstallOrientation = mDisplay.getInstallOrientation();
|
||||
// Internal state updated, now notify the view hierarchy.
|
||||
mView.dispatchMovedToDisplay(mDisplay, config);
|
||||
}
|
||||
@@ -8231,7 +8227,7 @@ public final class ViewRootImpl implements ViewParent,
|
||||
}
|
||||
|
||||
final int transformHint = SurfaceControl.rotationToBufferTransform(
|
||||
(mDisplayInstallOrientation + mDisplay.getRotation()) % 4);
|
||||
(mDisplay.getInstallOrientation() + mDisplay.getRotation()) % 4);
|
||||
|
||||
WindowLayout.computeSurfaceSize(mWindowAttributes, winConfig.getMaxBounds(), requestedWidth,
|
||||
requestedHeight, mWinFrameInScreen, mPendingDragResizing, mSurfaceSize);
|
||||
@@ -8256,7 +8252,7 @@ public final class ViewRootImpl implements ViewParent,
|
||||
}
|
||||
|
||||
mLastTransformHint = transformHint;
|
||||
|
||||
|
||||
mSurfaceControl.setTransformHint(transformHint);
|
||||
|
||||
if (mAttachInfo.mContentCaptureManager != null) {
|
||||
|
||||
Reference in New Issue
Block a user