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

Commit 01e9a97f authored by George Mount's avatar George Mount
Browse files

Don't lose ActivityOptions during orientation change.

Bug 16188506

Change-Id: I056153e6ddbaf328dd65b8b27a91ae773c33ea22
parent 94565418
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -95,6 +95,8 @@ class ActivityTransitionState {
     */
    private int mExitTransitionCoordinatorsKey = 1;

    private boolean mIsEnterTriggered;

    public ActivityTransitionState() {
    }

@@ -142,8 +144,10 @@ class ActivityTransitionState {
    public void setEnterActivityOptions(Activity activity, ActivityOptions options) {
        if (activity.getWindow().hasFeature(Window.FEATURE_CONTENT_TRANSITIONS)
                && options != null && mEnterActivityOptions == null
                && mEnterTransitionCoordinator == null
                && options.getAnimationType() == ActivityOptions.ANIM_SCENE_TRANSITION) {
            mEnterActivityOptions = options;
            mIsEnterTriggered = false;
            if (mEnterActivityOptions.isReturning()) {
                int result = mEnterActivityOptions.getResultCode();
                if (result != 0) {
@@ -154,9 +158,10 @@ class ActivityTransitionState {
    }

    public void enterReady(Activity activity) {
        if (mEnterActivityOptions == null) {
        if (mEnterActivityOptions == null || mIsEnterTriggered) {
            return;
        }
        mIsEnterTriggered = true;
        mHasExited = false;
        ArrayList<String> sharedElementNames = mEnterActivityOptions.getSharedElementNames();
        ResultReceiver resultReceiver = mEnterActivityOptions.getResultReceiver();
@@ -259,6 +264,7 @@ class ActivityTransitionState {
            return;
        }
        ActivityOptions activityOptions = new ActivityOptions(options);
        mEnterTransitionCoordinator = null;
        if (activityOptions.getAnimationType() == ActivityOptions.ANIM_SCENE_TRANSITION) {
            int key = activityOptions.getExitCoordinatorKey();
            int index = mExitTransitionCoordinators.indexOfKey(key);
+1 −1
Original line number Diff line number Diff line
@@ -329,7 +329,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator {
    private Bundle captureExitSharedElementsState() {
        Bundle bundle = new Bundle();
        Rect bounds = new Rect();
        for (int i = 0; i < mSharedElementNames.size(); i++) {
        for (int i = 0; i < mSharedElements.size(); i++) {
            String name = mSharedElementNames.get(i);
            Bundle sharedElementState = mExitSharedElementBundle.getBundle(name);
            if (sharedElementState != null) {
+5 −7
Original line number Diff line number Diff line
@@ -1081,6 +1081,7 @@ final class ActivityStack {
        if (next == mLastScreenshotActivity) {
            invalidateLastScreenshot();
        }
        mReturningActivityOptions = null;
    }

    private void setVisibile(ActivityRecord r, boolean visible) {
@@ -1217,14 +1218,11 @@ final class ActivityStack {
                        if (DEBUG_VISBILITY) Slog.v(TAG, "Skipping: already visible at " + r);
                        r.stopFreezingScreenLocked(false);
                        try {
                            if (mReturningActivityOptions != null) {
                                if (activityNdx > 0) {
                            if (mReturningActivityOptions != null && r == top && activityNdx > 0) {
                                ActivityRecord under = activities.get(activityNdx - 1);
                                under.app.thread.scheduleOnNewActivityOptions(under.appToken,
                                        mReturningActivityOptions);
                            }
                                mReturningActivityOptions = null;
                            }
                        } catch(RemoteException e) {
                        }
                    } else if (onlyThisProcess == null) {