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

Commit 964589f4 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: 313b180b

parents cd643112 313b180b
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -3594,8 +3594,11 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
                && !mTransitionController.useShellTransitionsRotation()) {
                && !mTransitionController.useShellTransitionsRotation()) {
            if (deltaRotation != Surface.ROTATION_0) {
            if (deltaRotation != Surface.ROTATION_0) {
                updateSurfaceRotation(t, deltaRotation, null /* positionLeash */);
                updateSurfaceRotation(t, deltaRotation, null /* positionLeash */);
                t.setFixedTransformHint(mSurfaceControl,
                        getWindowConfiguration().getDisplayRotation());
            } else if (deltaRotation != mLastDeltaRotation) {
            } else if (deltaRotation != mLastDeltaRotation) {
                t.setMatrix(mSurfaceControl, 1, 0, 0, 1);
                t.setMatrix(mSurfaceControl, 1, 0, 0, 1);
                t.unsetFixedTransformHint(mSurfaceControl);
            }
            }
        }
        }
        mLastDeltaRotation = deltaRotation;
        mLastDeltaRotation = deltaRotation;
+1 −0
Original line number Original line Diff line number Diff line
@@ -596,6 +596,7 @@ class WindowToken extends WindowContainer<WindowState> {
                .build();
                .build();
        t.setPosition(leash, mLastSurfacePosition.x, mLastSurfacePosition.y);
        t.setPosition(leash, mLastSurfacePosition.x, mLastSurfacePosition.y);
        t.reparent(getSurfaceControl(), leash);
        t.reparent(getSurfaceControl(), leash);
        t.setFixedTransformHint(leash, getWindowConfiguration().getDisplayRotation());
        mFixedRotationTransformLeash = leash;
        mFixedRotationTransformLeash = leash;
        updateSurfaceRotation(t, rotation, mFixedRotationTransformLeash);
        updateSurfaceRotation(t, rotation, mFixedRotationTransformLeash);
        return mFixedRotationTransformLeash;
        return mFixedRotationTransformLeash;
+19 −3
Original line number Original line Diff line number Diff line
@@ -125,9 +125,10 @@ public class SurfaceControlTests {
    public void testSurfaceChangedOnRotation() {
    public void testSurfaceChangedOnRotation() {
        final Instrumentation instrumentation = getInstrumentation();
        final Instrumentation instrumentation = getInstrumentation();
        final Context context = instrumentation.getContext();
        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))
                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 SurfaceView sv = new SurfaceView(activity);
        final AtomicInteger surfaceChangedCount = new AtomicInteger();
        final AtomicInteger surfaceChangedCount = new AtomicInteger();
        instrumentation.runOnMainSync(() -> activity.setContentView(sv));
        instrumentation.runOnMainSync(() -> activity.setContentView(sv));
@@ -157,12 +158,27 @@ public class SurfaceControlTests {
        instrumentation.waitForIdleSync();
        instrumentation.waitForIdleSync();
        final int newRotation = activity.getResources().getConfiguration()
        final int newRotation = activity.getResources().getConfiguration()
                .windowConfiguration.getRotation();
                .windowConfiguration.getRotation();
        if (rotation == newRotation) {
            // The device might not support requested orientation.
            activity.finishAndRemoveTask();
            return;
        }
        final int count = surfaceChangedCount.get();
        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();
        activity.finishAndRemoveTask();

        // The first count is triggered from creation, so the target number is 2.
        // 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);
            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() {
    private SurfaceControl buildTestSurface() {