Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6732df29 authored by Vishnu Nair's avatar Vishnu Nair
Browse files

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
parent 5fe69e14
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -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);
+2 −6
Original line number Diff line number Diff line
@@ -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);