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

Commit 6fde6ce0 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Set fixed transform hint on app level rotated surface" into udc-dev am:...

Merge "Set fixed transform hint on app level rotated surface" into udc-dev am: 313b180b am: 964589f4

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



Change-Id: Iea9a94599c6ba079c17fb8a511c0772f3195e6be
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 7d6a1ca7 964589f4
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -3594,8 +3594,11 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
                && !mTransitionController.useShellTransitionsRotation()) {
            if (deltaRotation != Surface.ROTATION_0) {
                updateSurfaceRotation(t, deltaRotation, null /* positionLeash */);
                t.setFixedTransformHint(mSurfaceControl,
                        getWindowConfiguration().getDisplayRotation());
            } else if (deltaRotation != mLastDeltaRotation) {
                t.setMatrix(mSurfaceControl, 1, 0, 0, 1);
                t.unsetFixedTransformHint(mSurfaceControl);
            }
        }
        mLastDeltaRotation = deltaRotation;
+1 −0
Original line number Diff line number Diff line
@@ -596,6 +596,7 @@ class WindowToken extends WindowContainer<WindowState> {
                .build();
        t.setPosition(leash, mLastSurfacePosition.x, mLastSurfacePosition.y);
        t.reparent(getSurfaceControl(), leash);
        t.setFixedTransformHint(leash, getWindowConfiguration().getDisplayRotation());
        mFixedRotationTransformLeash = leash;
        updateSurfaceRotation(t, rotation, mFixedRotationTransformLeash);
        return mFixedRotationTransformLeash;
+19 −3
Original line number Diff line number Diff line
@@ -125,9 +125,10 @@ public class SurfaceControlTests {
    public void testSurfaceChangedOnRotation() {
        final Instrumentation instrumentation = getInstrumentation();
        final Context context = instrumentation.getContext();
        final Activity activity = instrumentation.startActivitySync(new Intent().setComponent(
        final Intent intent = new Intent().setComponent(
                new ComponentName(context, ActivityOptionsTest.MainActivity.class))
                .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
                .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        final Activity activity = instrumentation.startActivitySync(intent);
        final SurfaceView sv = new SurfaceView(activity);
        final AtomicInteger surfaceChangedCount = new AtomicInteger();
        instrumentation.runOnMainSync(() -> activity.setContentView(sv));
@@ -157,12 +158,27 @@ public class SurfaceControlTests {
        instrumentation.waitForIdleSync();
        final int newRotation = activity.getResources().getConfiguration()
                .windowConfiguration.getRotation();
        if (rotation == newRotation) {
            // The device might not support requested orientation.
            activity.finishAndRemoveTask();
            return;
        }
        final int count = surfaceChangedCount.get();
        activity.moveTaskToBack(true /* nonRoot */);
        instrumentation.getUiAutomation().syncInputTransactions();
        context.startActivity(intent);
        instrumentation.getUiAutomation().syncInputTransactions();
        final int countAfterToFront = count - surfaceChangedCount.get();
        activity.finishAndRemoveTask();

        // The first count is triggered from creation, so the target number is 2.
        if (rotation != newRotation && count > 2) {
        if (count > 2) {
            fail("More than once surfaceChanged for rotation change: " + count);
        }
        if (countAfterToFront > 1) {
            fail("More than once surfaceChanged for app transition with rotation change: "
                    + countAfterToFront);
        }
    }

    private SurfaceControl buildTestSurface() {