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

Commit 094a6119 authored by Milton Wu's avatar Milton Wu
Browse files

Rounded corner not align to right on land

1. On landscape mode, the right rounded corner shall be aligned to the
   right side, not left side
2. Add correct null check in onDisplayChanged() inside ScreenDecorations
3. ScreenDecorHwcLayer::updateRoundedCornerExistenceAndSize() shall
   compare top size

Bug: 230592960
Test: atest ScreenDecorHwcLayerTest ScreenDecorationsTest
Test: Rotate app to landscape mode and check rounded corner drawn on
      correct pos
Change-Id: Ifb62e0a74f8e3c93c2ea897fa67c4a9393096f7e
parent 34e18413
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -380,7 +380,7 @@ class ScreenDecorHwcLayer(context: Context, displayDecorationSupport: DisplayDec
    ) {
        if (hasTopRoundedCorner == hasTop &&
                hasBottomRoundedCorner == hasBottom &&
                roundedCornerBottomSize == bottomSize &&
                roundedCornerTopSize == topSize &&
                roundedCornerBottomSize == bottomSize) {
            return
        }
+9 −6
Original line number Diff line number Diff line
@@ -346,7 +346,8 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab
            @Override
            public void onDisplayChanged(int displayId) {
                final int newRotation = mContext.getDisplay().getRotation();
                if (mOverlays != null && mRotation != newRotation) {
                if ((mOverlays != null || mScreenDecorHwcWindow != null)
                        && mRotation != newRotation) {
                    // We cannot immediately update the orientation. Otherwise
                    // WindowManager is still deferring layout until it has finished dispatching
                    // the config changes, which may cause divergence between what we draw
@@ -360,6 +361,7 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab
                                + mRotation);
                    }

                    if (mOverlays != null) {
                        for (int i = 0; i < BOUNDS_POSITION_LENGTH; i++) {
                            if (mOverlays[i] != null) {
                                final ViewGroup overlayView = mOverlays[i].getRootView();
@@ -367,6 +369,7 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab
                                        new RestartingPreDrawListener(overlayView, i, newRotation));
                            }
                        }
                    }

                    if (mScreenDecorHwcWindow != null) {
                        mScreenDecorHwcWindow.getViewTreeObserver().addOnPreDrawListener(
+1 −1
Original line number Diff line number Diff line
@@ -105,7 +105,7 @@ private fun Int.toLayoutGravity(@Surface.Rotation rotation: Int): Int = when (ro
        DisplayCutout.BOUNDS_POSITION_LEFT -> Gravity.BOTTOM
        DisplayCutout.BOUNDS_POSITION_TOP -> Gravity.LEFT
        DisplayCutout.BOUNDS_POSITION_RIGHT -> Gravity.TOP
        else /* DisplayCutout.BOUNDS_POSITION_BOTTOM */ -> Gravity.LEFT
        else /* DisplayCutout.BOUNDS_POSITION_BOTTOM */ -> Gravity.RIGHT
    }
    Surface.ROTATION_270 -> when (this) {
        DisplayCutout.BOUNDS_POSITION_LEFT -> Gravity.TOP