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

Commit 1f150726 authored by Evan Rosky's avatar Evan Rosky Committed by Automerger Merge Worker
Browse files

Merge "Add a failsafe to update surface position after activity-level transit"...

Merge "Add a failsafe to update surface position after activity-level transit" into udc-dev am: 321ed901

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



Change-Id: Ibcfaae81823348ab86cb78a60af4a10fdf6dd26f
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 7913e255 321ed901
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -7981,6 +7981,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
                mLastReportedConfiguration.getMergedConfiguration())) {
            ensureActivityConfiguration(0 /* globalChanges */, false /* preserveWindow */,
                    false /* ignoreVisibility */, true /* isRequestedOrientationChanged */);
            if (mTransitionController.inPlayingTransition(this)) {
                mTransitionController.mValidateActivityCompat.add(this);
            }
        }

        mAtmService.getTaskChangeNotificationController().notifyActivityRequestedOrientationChanged(
+17 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.IApplicationThread;
import android.app.WindowConfiguration;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Handler;
import android.os.IBinder;
@@ -140,6 +141,14 @@ class TransitionController {
     */
    final ArrayList<ActivityRecord> mValidateCommitVis = new ArrayList<>();

    /**
     * List of activity-level participants. ActivityRecord is not expected to change independently,
     * however, recent compatibility logic can now cause this at arbitrary times determined by
     * client code. If it happens during an animation, the surface can be left at the wrong spot.
     * TODO(b/290237710) remove when compat logic is moved.
     */
    final ArrayList<ActivityRecord> mValidateActivityCompat = new ArrayList<>();

    /**
     * Currently playing transitions (in the order they were started). When finished, records are
     * removed from this list.
@@ -905,6 +914,14 @@ class TransitionController {
            }
        }
        mValidateCommitVis.clear();
        for (int i = 0; i < mValidateActivityCompat.size(); ++i) {
            ActivityRecord ar = mValidateActivityCompat.get(i);
            if (ar.getSurfaceControl() == null) continue;
            final Point tmpPos = new Point();
            ar.getRelativePosition(tmpPos);
            ar.getSyncTransaction().setPosition(ar.getSurfaceControl(), tmpPos.x, tmpPos.y);
        }
        mValidateActivityCompat.clear();
    }

    /**