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

Commit 9941cc42 authored by Riddle Hsu's avatar Riddle Hsu
Browse files

Remove some unnecessary operations

- LaunchActivityItem already always copies all parameters.
  The Configuration doesn't need to copy twice.

- Except freeze screen is no longer used, configChanges=0 for
  startFreezingScreenLocked is always no-op.

Bug: 163976519
Test: CtsWindowManagerDeviceActivity
Change-Id: I57e335f94129badd7688b85df667f0ffd3243ede
parent 429020dd
Loading
Loading
Loading
Loading
+3 −11
Original line number Diff line number Diff line
@@ -6606,10 +6606,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        return hasProcess() && !app.isCrashing() && !app.isNotResponding();
    }

    void startFreezingScreenLocked(int configChanges) {
        startFreezingScreenLocked(app, configChanges);
    }

    void startFreezingScreenLocked(WindowProcessController app, int configChanges) {
        if (mayFreezeScreenLocked(app)) {
            if (getParent() == null) {
@@ -8093,12 +8089,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
     * Set the last reported configuration to the client. Should be called whenever
     * a new merged configuration is sent to the client for this activity.
     */
    void setLastReportedConfiguration(@NonNull MergedConfiguration config) {
        setLastReportedConfiguration(config.getGlobalConfiguration(),
            config.getOverrideConfiguration());
    }

    private void setLastReportedConfiguration(Configuration global, Configuration override) {
    void setLastReportedConfiguration(@NonNull Configuration global,
            @NonNull Configuration override) {
        mLastReportedConfiguration.setConfiguration(global, override);
    }

@@ -9632,7 +9624,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
            configChangeFlags |= changes;
            if (mVisible && mAtmService.mTmpUpdateConfigurationResult.mIsUpdating
                    && !mTransitionController.isShellTransitionsEnabled()) {
                startFreezingScreenLocked(mAtmService.mTmpUpdateConfigurationResult.changes);
                startFreezingScreenLocked(app, mAtmService.mTmpUpdateConfigurationResult.changes);
            }
            final boolean displayMayChange = mTmpConfig.windowConfiguration.getDisplayRotation()
                    != getWindowConfiguration().getDisplayRotation()
+3 −13
Original line number Diff line number Diff line
@@ -134,7 +134,6 @@ import android.os.UserManager;
import android.os.WorkSource;
import android.provider.MediaStore;
import android.util.ArrayMap;
import android.util.MergedConfiguration;
import android.util.Slog;
import android.util.SparseArray;
import android.util.SparseIntArray;
@@ -820,8 +819,6 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
        proc.pauseConfigurationDispatch();

        try {
            r.startFreezingScreenLocked(proc, 0);

            // schedule launch ticks to collect information about slow apps.
            r.startLaunchTickingLocked();
            r.lastLaunchTime = SystemClock.uptimeMillis();
@@ -908,13 +905,9 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
                        r.intent.getComponent().getPackageName(), NOTIFY_PACKAGE_USE_ACTIVITY);
                mService.getAppWarningsLocked().onStartActivity(r);

                // Because we could be starting an Activity in the system process this may not go
                // across a Binder interface which would create a new Configuration. Consequently
                // we have to always create a new Configuration here.
                final Configuration procConfig = proc.prepareConfigurationForLaunchingActivity();
                final MergedConfiguration mergedConfiguration = new MergedConfiguration(
                        procConfig, r.getMergedOverrideConfiguration());
                r.setLastReportedConfiguration(mergedConfiguration);
                final Configuration overrideConfig = r.getMergedOverrideConfiguration();
                r.setLastReportedConfiguration(procConfig, overrideConfig);

                logIfTransactionTooLarge(r.intent, r.getSavedState());

@@ -932,10 +925,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
                final int deviceId = getDeviceIdForDisplayId(r.getDisplayId());
                final LaunchActivityItem launchActivityItem = LaunchActivityItem.obtain(r.token,
                        r.intent, System.identityHashCode(r), r.info,
                        // TODO: Have this take the merged configuration instead of separate global
                        // and override configs.
                        mergedConfiguration.getGlobalConfiguration(),
                        mergedConfiguration.getOverrideConfiguration(), deviceId,
                        procConfig, overrideConfig, deviceId,
                        r.getFilteredReferrer(r.launchedFromPackage), task.voiceInteractor,
                        proc.getReportedProcState(), r.getSavedState(), r.getPersistentSavedState(),
                        results, newIntents, r.takeOptions(), isTransitionForward,
+6 −13
Original line number Diff line number Diff line
@@ -143,7 +143,6 @@ import android.os.Process;
import android.os.RemoteException;
import android.platform.test.annotations.Presubmit;
import android.provider.DeviceConfig;
import android.util.MergedConfiguration;
import android.util.MutableBoolean;
import android.view.DisplayInfo;
import android.view.IRemoteAnimationFinishedCallback;
@@ -395,8 +394,7 @@ public class ActivityRecordTests extends WindowTestsBase {
        activity.setState(RESUMED, "Testing");

        task.onRequestedOverrideConfigurationChanged(task.getConfiguration());
        activity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(),
                activity.getConfiguration()));
        activity.setLastReportedConfiguration(new Configuration(), activity.getConfiguration());

        activity.info.configChanges &= ~CONFIG_ORIENTATION;
        final Configuration newConfig = new Configuration(task.getConfiguration());
@@ -420,8 +418,7 @@ public class ActivityRecordTests extends WindowTestsBase {
        activity.setState(RESUMED, "Testing");

        task.onRequestedOverrideConfigurationChanged(task.getConfiguration());
        activity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(),
                activity.getConfiguration()));
        activity.setLastReportedConfiguration(new Configuration(), activity.getConfiguration());

        activity.info.configChanges &= ~CONFIG_ORIENTATION;
        final Configuration newConfig = new Configuration(task.getConfiguration());
@@ -447,8 +444,7 @@ public class ActivityRecordTests extends WindowTestsBase {
        activity.setState(RESUMED, "Testing");

        task.onRequestedOverrideConfigurationChanged(task.getConfiguration());
        activity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(),
                activity.getConfiguration()));
        activity.setLastReportedConfiguration(new Configuration(), activity.getConfiguration());

        activity.info.configChanges &= ~CONFIG_ORIENTATION;
        final Configuration newConfig = new Configuration(task.getConfiguration());
@@ -468,8 +464,7 @@ public class ActivityRecordTests extends WindowTestsBase {
        activity.setState(RESUMED, "Testing");

        task.onRequestedOverrideConfigurationChanged(task.getConfiguration());
        activity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(),
                activity.getConfiguration()));
        activity.setLastReportedConfiguration(new Configuration(), activity.getConfiguration());

        activity.info.configChanges &= ~ActivityInfo.CONFIG_FONT_SCALE;
        final Configuration newConfig = new Configuration(task.getConfiguration());
@@ -571,8 +566,7 @@ public class ActivityRecordTests extends WindowTestsBase {
                .build();
        activity.setState(RESUMED, "Testing");

        activity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(),
                activity.getConfiguration()));
        activity.setLastReportedConfiguration(new Configuration(), activity.getConfiguration());

        clearInvocations(mClientLifecycleManager);

@@ -799,8 +793,7 @@ public class ActivityRecordTests extends WindowTestsBase {
            doReturn(false).when(stack).isTranslucent(any());
            assertTrue(task.shouldBeVisible(null /* starting */));

            activity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(),
                    activity.getConfiguration()));
            activity.setLastReportedConfiguration(new Configuration(), activity.getConfiguration());

            final Configuration newConfig = new Configuration(activity.getConfiguration());
            final int shortSide = newConfig.screenWidthDp == newConfig.screenHeightDp
+1 −3
Original line number Diff line number Diff line
@@ -76,7 +76,6 @@ import android.graphics.Rect;
import android.os.PowerManager;
import android.os.UserHandle;
import android.platform.test.annotations.Presubmit;
import android.util.MergedConfiguration;
import android.util.Pair;

import androidx.test.filters.MediumTest;
@@ -545,8 +544,7 @@ public class RootWindowContainerTests extends WindowTestsBase {
        assertNotEquals(activity.getConfiguration().orientation, rotatedConfig.orientation);
        // Assume the activity was shown in different orientation. For example, the top activity is
        // landscape and the portrait lockscreen is shown.
        activity.setLastReportedConfiguration(
                new MergedConfiguration(mAtm.getGlobalConfiguration(), rotatedConfig));
        activity.setLastReportedConfiguration(mAtm.getGlobalConfiguration(), rotatedConfig);
        activity.setState(STOPPED, "sleep");

        display.setIsSleeping(true);