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

Commit f43be0ca authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Request transition for global config change" into main

parents 3cc871c8 de0494eb
Loading
Loading
Loading
Loading
+34 −1
Original line number Diff line number Diff line
@@ -5059,7 +5059,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        deferWindowLayout();
        try {
            if (values != null) {
                changes = updateGlobalConfigurationLocked(values, initLocale, persistent, userId);
                changes = updateGlobalConfigurationWithTransition(
                        values, initLocale, persistent, userId);
                mTmpUpdateConfigurationResult.changes = changes;
            }

@@ -5073,6 +5074,38 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        return kept;
    }

    /** This is mainly to handle changes in locale, font scale/weight, uiMode, asset paths. */
    @ActivityInfo.Config
    private int updateGlobalConfigurationWithTransition(@NonNull Configuration values,
            boolean initLocale, boolean persistent, @UserIdInt int userId) {
        final int changes = getGlobalConfiguration().diffPublicOnly(values);
        if (changes == 0) {
            return 0;
        }
        ActionChain chain = null;
        final TransitionController tc = mRootWindowContainer.mTransitionController;
        if (tc.isShellTransitionsEnabled()) {
            chain = mChainTracker.startTransit("updateGlobalConfig");
            Transition transition = chain.getTransition();
            if (transition == null || !transition.isCollecting()) {
                transition = tc.createTransition(TRANSIT_CHANGE);
                chain.attachTransition(tc.requestStartTransition(transition, null /* startTask */,
                        null /* remoteTransition */, null /* displayChange */));
            }
            for (int i = mRootWindowContainer.getChildCount() - 1; i >= 0; i--) {
                final DisplayContent dc = mRootWindowContainer.getChildAt(i);
                dc.collectDisplayChange(transition);
                transition.setKnownConfigChanges(dc, changes);
            }
            startPowerMode(POWER_MODE_REASON_CHANGE_DISPLAY);
        }
        updateGlobalConfigurationLocked(values, initLocale, persistent, userId);
        if (chain != null) {
            mChainTracker.endPartial();
        }
        return changes;
    }

    /**
     * Updates default (global) configuration and notifies listeners about changes.
     *