Loading core/proto/android/server/windowmanagerservice.proto +1 −1 Original line number Diff line number Diff line Loading @@ -337,7 +337,7 @@ message ActivityRecordProto { optional bool starting_displayed = 20; optional bool starting_moved = 201; optional bool visible_set_from_transferred_starting_window = 22; repeated .android.graphics.RectProto frozen_bounds = 23; repeated .android.graphics.RectProto frozen_bounds = 23 [deprecated=true]; optional bool visible = 24; reserved 25; // configuration_container optional IdentifierProto identifier = 26 [deprecated=true]; Loading services/core/java/com/android/server/wm/ActivityRecord.java +0 −69 Original line number Diff line number Diff line Loading @@ -132,7 +132,6 @@ import static com.android.server.wm.ActivityRecordProto.CLIENT_VISIBLE; import static com.android.server.wm.ActivityRecordProto.DEFER_HIDING_CLIENT; import static com.android.server.wm.ActivityRecordProto.FILLS_PARENT; import static com.android.server.wm.ActivityRecordProto.FRONT_OF_TASK; import static com.android.server.wm.ActivityRecordProto.FROZEN_BOUNDS; import static com.android.server.wm.ActivityRecordProto.IS_ANIMATING; import static com.android.server.wm.ActivityRecordProto.IS_WAITING_FOR_TRANSITION_START; import static com.android.server.wm.ActivityRecordProto.LAST_ALL_DRAWN; Loading Loading @@ -344,7 +343,6 @@ import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.lang.ref.WeakReference; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; Loading Loading @@ -732,9 +730,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // windows, where the app hasn't had time to set a value on the window. int mRotationAnimationHint = -1; ArrayDeque<Rect> mFrozenBounds = new ArrayDeque<>(); ArrayDeque<Configuration> mFrozenMergedConfig = new ArrayDeque<>(); private AppSaturationInfo mLastAppSaturationInfo; private final ColorDisplayService.ColorTransformController mColorTransformController = Loading Loading @@ -1035,10 +1030,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A pw.println(" mVisibleSetFromTransferredStartingWindow=" + mVisibleSetFromTransferredStartingWindow); } if (!mFrozenBounds.isEmpty()) { pw.print(prefix); pw.print("mFrozenBounds="); pw.println(mFrozenBounds); pw.print(prefix); pw.print("mFrozenMergedConfig="); pw.println(mFrozenMergedConfig); } if (mPendingRelaunchCount != 0) { pw.print(prefix); pw.print("mPendingRelaunchCount="); pw.println(mPendingRelaunchCount); } Loading Loading @@ -3359,56 +3350,18 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return mPendingRelaunchCount > 0; } boolean shouldFreezeBounds() { // For freeform windows, we can't freeze the bounds at the moment because this would make // the resizing unresponsive. if (task == null || task.inFreeformWindowingMode()) { return false; } // We freeze the bounds while drag resizing to deal with the time between // the divider/drag handle being released, and the handling it's new // configuration. If we are relaunched outside of the drag resizing state, // we need to be careful not to do this. return task.isDragResizing(); } @VisibleForTesting void startRelaunching() { if (mPendingRelaunchCount == 0) { mRelaunchStartTime = SystemClock.elapsedRealtime(); } if (shouldFreezeBounds()) { freezeBounds(); } clearAllDrawn(); mPendingRelaunchCount++; } /** * Freezes the task bounds. The size of this task reported the app will be fixed to the bounds * freezed by {@link Task#prepareFreezingBounds} until {@link #unfreezeBounds} gets called, even * if they change in the meantime. If the bounds are already frozen, the bounds will be frozen * with a queue. */ private void freezeBounds() { mFrozenBounds.offer(new Rect(task.mPreparedFrozenBounds)); if (task.mPreparedFrozenMergedConfig.equals(Configuration.EMPTY)) { // We didn't call prepareFreezingBounds on the task, so use the current value. mFrozenMergedConfig.offer(new Configuration(task.getConfiguration())); } else { mFrozenMergedConfig.offer(new Configuration(task.mPreparedFrozenMergedConfig)); } // Calling unset() to make it equal to Configuration.EMPTY. task.mPreparedFrozenMergedConfig.unset(); } void finishRelaunching() { mTaskSupervisor.getActivityMetricsLogger().notifyActivityRelaunched(this); unfreezeBounds(); if (mPendingRelaunchCount > 0) { mPendingRelaunchCount--; Loading @@ -3430,29 +3383,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (mPendingRelaunchCount == 0) { return; } unfreezeBounds(); mPendingRelaunchCount = 0; mRelaunchStartTime = 0; } /** * Unfreezes the previously frozen bounds. See {@link #freezeBounds}. */ private void unfreezeBounds() { if (mFrozenBounds.isEmpty()) { return; } mFrozenBounds.remove(); if (!mFrozenMergedConfig.isEmpty()) { mFrozenMergedConfig.remove(); } for (int i = mChildren.size() - 1; i >= 0; i--) { final WindowState win = mChildren.get(i); win.onUnfreezeBounds(); } mWmService.mWindowPlacerLocked.performSurfacePlacement(); } /** * Perform clean-up of service connections in an activity record. */ Loading Loading @@ -8214,9 +8148,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A proto.write(STARTING_MOVED, startingMoved); proto.write(VISIBLE_SET_FROM_TRANSFERRED_STARTING_WINDOW, mVisibleSetFromTransferredStartingWindow); for (Rect bounds : mFrozenBounds) { bounds.dumpDebug(proto, FROZEN_BOUNDS); } proto.write(STATE, mState.toString()); proto.write(FRONT_OF_TASK, isRootOfTask()); Loading services/core/java/com/android/server/wm/ActivityTaskManagerService.java +0 −8 Original line number Diff line number Diff line Loading @@ -4042,17 +4042,9 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { int updateGlobalConfigurationLocked(@NonNull Configuration values, boolean initLocale, boolean persistent, int userId) { final DisplayContent defaultDisplay = mRootWindowContainer.getDisplayContent(DEFAULT_DISPLAY); mTempConfig.setTo(getGlobalConfiguration()); final int changes = mTempConfig.updateFrom(values); if (changes == 0) { // Since calling to Activity.setRequestedOrientation leads to freezing the window with // setting WindowManagerService.mWaitingForConfig to true, it is important that we call // performDisplayOverrideConfigUpdate in order to send the new display configuration // (even if there are no actual changes) to unfreeze the window. defaultDisplay.performDisplayOverrideConfigUpdate(values); return 0; } Loading services/core/java/com/android/server/wm/ConfigurationContainer.java +9 −6 Original line number Diff line number Diff line Loading @@ -141,14 +141,17 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> { mChangeListeners.get(i).onMergedOverrideConfigurationChanged( mMergedOverrideConfiguration); } dispatchConfigurationToChildren(); } void dispatchConfigurationToChildren() { for (int i = getChildCount() - 1; i >= 0; --i) { final ConfigurationContainer child = getChildAt(i); child.onConfigurationChanged(mFullConfiguration); dispatchConfigurationToChild(getChildAt(i), mFullConfiguration); } } /** * Dispatches the configuration to child when {@link #onConfigurationChanged(Configuration)} is * called. This allows the derived classes to override how to dispatch the configuration. */ void dispatchConfigurationToChild(E child, Configuration config) { child.onConfigurationChanged(config); } /** Loading services/core/java/com/android/server/wm/DisplayContent.java +0 −4 Original line number Diff line number Diff line Loading @@ -2943,10 +2943,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp return dockFrame.bottom - imeFrame.top; } void prepareFreezingTaskBounds() { forAllRootTasks(Task::prepareFreezingTaskBounds); } void rotateBounds(@Rotation int oldRotation, @Rotation int newRotation, Rect inOutBounds) { // Get display bounds on oldRotation as parent bounds for the rotation. getBounds(mTmpRect, oldRotation); Loading Loading
core/proto/android/server/windowmanagerservice.proto +1 −1 Original line number Diff line number Diff line Loading @@ -337,7 +337,7 @@ message ActivityRecordProto { optional bool starting_displayed = 20; optional bool starting_moved = 201; optional bool visible_set_from_transferred_starting_window = 22; repeated .android.graphics.RectProto frozen_bounds = 23; repeated .android.graphics.RectProto frozen_bounds = 23 [deprecated=true]; optional bool visible = 24; reserved 25; // configuration_container optional IdentifierProto identifier = 26 [deprecated=true]; Loading
services/core/java/com/android/server/wm/ActivityRecord.java +0 −69 Original line number Diff line number Diff line Loading @@ -132,7 +132,6 @@ import static com.android.server.wm.ActivityRecordProto.CLIENT_VISIBLE; import static com.android.server.wm.ActivityRecordProto.DEFER_HIDING_CLIENT; import static com.android.server.wm.ActivityRecordProto.FILLS_PARENT; import static com.android.server.wm.ActivityRecordProto.FRONT_OF_TASK; import static com.android.server.wm.ActivityRecordProto.FROZEN_BOUNDS; import static com.android.server.wm.ActivityRecordProto.IS_ANIMATING; import static com.android.server.wm.ActivityRecordProto.IS_WAITING_FOR_TRANSITION_START; import static com.android.server.wm.ActivityRecordProto.LAST_ALL_DRAWN; Loading Loading @@ -344,7 +343,6 @@ import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.lang.ref.WeakReference; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; Loading Loading @@ -732,9 +730,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // windows, where the app hasn't had time to set a value on the window. int mRotationAnimationHint = -1; ArrayDeque<Rect> mFrozenBounds = new ArrayDeque<>(); ArrayDeque<Configuration> mFrozenMergedConfig = new ArrayDeque<>(); private AppSaturationInfo mLastAppSaturationInfo; private final ColorDisplayService.ColorTransformController mColorTransformController = Loading Loading @@ -1035,10 +1030,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A pw.println(" mVisibleSetFromTransferredStartingWindow=" + mVisibleSetFromTransferredStartingWindow); } if (!mFrozenBounds.isEmpty()) { pw.print(prefix); pw.print("mFrozenBounds="); pw.println(mFrozenBounds); pw.print(prefix); pw.print("mFrozenMergedConfig="); pw.println(mFrozenMergedConfig); } if (mPendingRelaunchCount != 0) { pw.print(prefix); pw.print("mPendingRelaunchCount="); pw.println(mPendingRelaunchCount); } Loading Loading @@ -3359,56 +3350,18 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return mPendingRelaunchCount > 0; } boolean shouldFreezeBounds() { // For freeform windows, we can't freeze the bounds at the moment because this would make // the resizing unresponsive. if (task == null || task.inFreeformWindowingMode()) { return false; } // We freeze the bounds while drag resizing to deal with the time between // the divider/drag handle being released, and the handling it's new // configuration. If we are relaunched outside of the drag resizing state, // we need to be careful not to do this. return task.isDragResizing(); } @VisibleForTesting void startRelaunching() { if (mPendingRelaunchCount == 0) { mRelaunchStartTime = SystemClock.elapsedRealtime(); } if (shouldFreezeBounds()) { freezeBounds(); } clearAllDrawn(); mPendingRelaunchCount++; } /** * Freezes the task bounds. The size of this task reported the app will be fixed to the bounds * freezed by {@link Task#prepareFreezingBounds} until {@link #unfreezeBounds} gets called, even * if they change in the meantime. If the bounds are already frozen, the bounds will be frozen * with a queue. */ private void freezeBounds() { mFrozenBounds.offer(new Rect(task.mPreparedFrozenBounds)); if (task.mPreparedFrozenMergedConfig.equals(Configuration.EMPTY)) { // We didn't call prepareFreezingBounds on the task, so use the current value. mFrozenMergedConfig.offer(new Configuration(task.getConfiguration())); } else { mFrozenMergedConfig.offer(new Configuration(task.mPreparedFrozenMergedConfig)); } // Calling unset() to make it equal to Configuration.EMPTY. task.mPreparedFrozenMergedConfig.unset(); } void finishRelaunching() { mTaskSupervisor.getActivityMetricsLogger().notifyActivityRelaunched(this); unfreezeBounds(); if (mPendingRelaunchCount > 0) { mPendingRelaunchCount--; Loading @@ -3430,29 +3383,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (mPendingRelaunchCount == 0) { return; } unfreezeBounds(); mPendingRelaunchCount = 0; mRelaunchStartTime = 0; } /** * Unfreezes the previously frozen bounds. See {@link #freezeBounds}. */ private void unfreezeBounds() { if (mFrozenBounds.isEmpty()) { return; } mFrozenBounds.remove(); if (!mFrozenMergedConfig.isEmpty()) { mFrozenMergedConfig.remove(); } for (int i = mChildren.size() - 1; i >= 0; i--) { final WindowState win = mChildren.get(i); win.onUnfreezeBounds(); } mWmService.mWindowPlacerLocked.performSurfacePlacement(); } /** * Perform clean-up of service connections in an activity record. */ Loading Loading @@ -8214,9 +8148,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A proto.write(STARTING_MOVED, startingMoved); proto.write(VISIBLE_SET_FROM_TRANSFERRED_STARTING_WINDOW, mVisibleSetFromTransferredStartingWindow); for (Rect bounds : mFrozenBounds) { bounds.dumpDebug(proto, FROZEN_BOUNDS); } proto.write(STATE, mState.toString()); proto.write(FRONT_OF_TASK, isRootOfTask()); Loading
services/core/java/com/android/server/wm/ActivityTaskManagerService.java +0 −8 Original line number Diff line number Diff line Loading @@ -4042,17 +4042,9 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { int updateGlobalConfigurationLocked(@NonNull Configuration values, boolean initLocale, boolean persistent, int userId) { final DisplayContent defaultDisplay = mRootWindowContainer.getDisplayContent(DEFAULT_DISPLAY); mTempConfig.setTo(getGlobalConfiguration()); final int changes = mTempConfig.updateFrom(values); if (changes == 0) { // Since calling to Activity.setRequestedOrientation leads to freezing the window with // setting WindowManagerService.mWaitingForConfig to true, it is important that we call // performDisplayOverrideConfigUpdate in order to send the new display configuration // (even if there are no actual changes) to unfreeze the window. defaultDisplay.performDisplayOverrideConfigUpdate(values); return 0; } Loading
services/core/java/com/android/server/wm/ConfigurationContainer.java +9 −6 Original line number Diff line number Diff line Loading @@ -141,14 +141,17 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> { mChangeListeners.get(i).onMergedOverrideConfigurationChanged( mMergedOverrideConfiguration); } dispatchConfigurationToChildren(); } void dispatchConfigurationToChildren() { for (int i = getChildCount() - 1; i >= 0; --i) { final ConfigurationContainer child = getChildAt(i); child.onConfigurationChanged(mFullConfiguration); dispatchConfigurationToChild(getChildAt(i), mFullConfiguration); } } /** * Dispatches the configuration to child when {@link #onConfigurationChanged(Configuration)} is * called. This allows the derived classes to override how to dispatch the configuration. */ void dispatchConfigurationToChild(E child, Configuration config) { child.onConfigurationChanged(config); } /** Loading
services/core/java/com/android/server/wm/DisplayContent.java +0 −4 Original line number Diff line number Diff line Loading @@ -2943,10 +2943,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp return dockFrame.bottom - imeFrame.top; } void prepareFreezingTaskBounds() { forAllRootTasks(Task::prepareFreezingTaskBounds); } void rotateBounds(@Rotation int oldRotation, @Rotation int newRotation, Rect inOutBounds) { // Get display bounds on oldRotation as parent bounds for the rotation. getBounds(mTmpRect, oldRotation); Loading