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

Commit d64616e8 authored by George Mount's avatar George Mount
Browse files

Fix NPE when going "back" from Activity Transition.

Also fixed failure to start enter transition when shared element
and exit transition complete simultaneously.

Bug 14399938

Change-Id: Id0d4171f8cf94a30e47aee41ce68b4a25960f219
parent dbe2aed2
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -206,6 +206,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
    private ResultReceiver mRemoteResultReceiver;
    private boolean mNotifiedSharedElementTransitionComplete;
    private boolean mNotifiedExitTransitionComplete;
    private boolean mSharedElementTransitionStarted;

    private FixedEpicenterCallback mEpicenterCallback = new FixedEpicenterCallback();

@@ -250,7 +251,11 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
                onPrepareRestore();
                break;
            case MSG_EXIT_TRANSITION_COMPLETE:
                if (!mSharedElementTransitionStarted) {
                    send(resultCode, resultData);
                } else {
                    onRemoteSceneExitComplete();
                }
                break;
            case MSG_TAKE_SHARED_ELEMENTS:
                ArrayList<String> sharedElementNames
@@ -456,9 +461,13 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
        mTargetSharedNames.clear();
        if (sharedElements == null) {
            ArrayMap<String, View> map = new ArrayMap<String, View>();
            if (getViewsTransition() != null) {
                setViewVisibility(mEnteringViews, View.VISIBLE);
            }
            getDecor().findSharedElements(map);
            if (getViewsTransition() != null) {
                setViewVisibility(mEnteringViews, View.INVISIBLE);
            }
            for (int i = 0; i < map.size(); i++) {
                View view = map.valueAt(i);
                String name = map.keyAt(i);
@@ -582,6 +591,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
                        getDecor().getViewTreeObserver().removeOnPreDrawListener(this);
                        mListener.onCaptureSharedElementEnd(mTargetSharedNames, mSharedElements,
                                acceptedOverlayViews);
                        mSharedElementTransitionStarted = true;
                        return true;
                    }
                }
+2 −6
Original line number Diff line number Diff line
@@ -134,11 +134,6 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator
        }
    }

    @Override
    protected void onRemoteSceneExitComplete() {
        super.onRemoteSceneExitComplete();
    }

    @Override
    protected void onTakeSharedElements(ArrayList<String> sharedElementNames, Bundle state) {
        mEnteringSharedElementNames = new ArrayList<String>();
@@ -149,6 +144,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator
    @Override
    protected void sharedElementTransitionComplete(Bundle bundle) {
        notifySharedElementTransitionComplete(bundle);
        exitAfterSharedElementTransition();
    }

    @Override
@@ -280,7 +276,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator
    }

    private void exitAfterSharedElementTransition() {
        if (mSharedElementTransitionComplete && mExitTransitionComplete) {
        if (mSharedElementTransitionComplete && mExitTransitionComplete && mBackgroundFadedOut) {
            mActivity.finish();
            if (mSupportsTransition) {
                mActivity.overridePendingTransition(0, 0);