diff options
8 files changed, 10 insertions, 99 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java index 3f885f3ab23f..0684f109ce1b 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java @@ -1450,6 +1450,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { mUserLeaving = true; } + mService.deferWindowLayout(); final Transition newTransition = task.mTransitionController.isShellTransitionsEnabled() ? task.mTransitionController.isCollecting() ? null : task.mTransitionController.createTransition(TRANSIT_TO_FRONT) : null; @@ -1457,9 +1458,6 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { reason = reason + " findTaskToMoveToFront"; boolean reparented = false; if (task.isResizeable() && canUseActivityOptionsLaunchBounds(options)) { - final Rect bounds = options.getLaunchBounds(); - task.setBounds(bounds); - Task targetRootTask = mRootWindowContainer.getOrCreateRootTask(null, options, task, ON_TOP); @@ -1472,14 +1470,11 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { // task.reparent() should already placed the task on top, // still need moveTaskToFrontLocked() below for any transition settings. } - if (targetRootTask.shouldResizeRootTaskWithLaunchBounds()) { - targetRootTask.resize(bounds, !PRESERVE_WINDOWS, !DEFER_RESUME); - } else { - // WM resizeTask must be done after the task is moved to the correct stack, - // because Task's setBounds() also updates dim layer's bounds, but that has - // dependency on the root task. - task.resize(false /* relayout */, false /* forced */); - } + // The resizeTask must be done after the task is moved to the correct root task, + // because Task's setBounds() also updates dim layer's bounds, but that has + // dependency on the root task. + final Rect bounds = options.getLaunchBounds(); + task.setBounds(bounds); } if (!reparented) { @@ -1509,6 +1504,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { } } finally { mUserLeaving = false; + mService.continueWindowLayout(); } } diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 82237bb2c483..9f2d6a6c4464 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -500,7 +500,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp // Accessed directly by all users. private boolean mLayoutNeeded; int pendingLayoutChanges; - boolean mLayoutAndAssignWindowLayersScheduled; /** * Used to gate application window layout until we have sent the complete configuration. diff --git a/services/core/java/com/android/server/wm/InsetsSourceProvider.java b/services/core/java/com/android/server/wm/InsetsSourceProvider.java index 5171f5b02899..659f8d755c59 100644 --- a/services/core/java/com/android/server/wm/InsetsSourceProvider.java +++ b/services/core/java/com/android/server/wm/InsetsSourceProvider.java @@ -33,7 +33,6 @@ import static com.android.server.wm.InsetsSourceProviderProto.SEAMLESS_ROTATING; import static com.android.server.wm.InsetsSourceProviderProto.SERVER_VISIBLE; import static com.android.server.wm.InsetsSourceProviderProto.SOURCE; import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_INSETS_CONTROL; -import static com.android.server.wm.WindowManagerService.H.LAYOUT_AND_ASSIGN_WINDOW_LAYERS_IF_NEEDED; import android.annotation.NonNull; import android.annotation.Nullable; @@ -508,11 +507,6 @@ abstract class InsetsSourceProvider { return; } mClientVisible = clientVisible; - if (!mDisplayContent.mLayoutAndAssignWindowLayersScheduled) { - mDisplayContent.mLayoutAndAssignWindowLayersScheduled = true; - mDisplayContent.mWmService.mH.obtainMessage( - LAYOUT_AND_ASSIGN_WINDOW_LAYERS_IF_NEEDED, mDisplayContent).sendToTarget(); - } updateVisibility(); } diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 8609e10bbe92..49613310835a 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -423,9 +423,6 @@ class Task extends TaskFragment { // This number will be assigned when we evaluate OOM scores for all visible tasks. int mLayerRank = LAYER_RANK_INVISIBLE; - /** Helper object used for updating override configuration. */ - private Configuration mTmpConfig = new Configuration(); - /* Unique identifier for this task. */ final int mTaskId; /* User for which this task was created. */ @@ -796,16 +793,11 @@ class Task extends TaskFragment { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "resizeTask_" + mTaskId); - boolean updatedConfig = false; - mTmpConfig.setTo(getResolvedOverrideConfiguration()); - if (setBounds(bounds) != BOUNDS_CHANGE_NONE) { - updatedConfig = !mTmpConfig.equals(getResolvedOverrideConfiguration()); - } // This variable holds information whether the configuration didn't change in a // significant way and the activity was kept the way it was. If it's false, it means // the activity had to be relaunched due to configuration change. boolean kept = true; - if (updatedConfig) { + if (setBounds(bounds, forced) != BOUNDS_CHANGE_NONE) { final ActivityRecord r = topRunningActivityLocked(); if (r != null) { kept = r.ensureActivityConfiguration(0 /* globalChanges */, @@ -822,8 +814,6 @@ class Task extends TaskFragment { } } } - resize(kept, forced); - saveLaunchingStateIfNeeded(); Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); @@ -2693,12 +2683,6 @@ class Task extends TaskFragment { return canSpecifyOrientation() && getDisplayArea().canSpecifyOrientation(orientation); } - void resize(boolean relayout, boolean forced) { - if (setBounds(getRequestedOverrideBounds(), forced) != BOUNDS_CHANGE_NONE && relayout) { - getDisplayContent().layoutAndAssignWindowLayersIfNeeded(); - } - } - @Override void onDisplayChanged(DisplayContent dc) { final boolean isRootTask = isRootTask(); @@ -4771,14 +4755,6 @@ class Task extends TaskFragment { } } - /** - * Returns true if this root task should be resized to match the bounds specified by - * {@link ActivityOptions#setLaunchBounds} when launching an activity into the root task. - */ - boolean shouldResizeRootTaskWithLaunchBounds() { - return inPinnedWindowingMode(); - } - void checkTranslucentActivityWaiting(ActivityRecord top) { if (mTranslucentActivityWaiting != top) { mUndrawnActivitiesBelowTopTranslucent.clear(); @@ -5603,29 +5579,6 @@ class Task extends TaskFragment { return true; } - // TODO: Can only be called from special methods in ActivityTaskSupervisor. - // Need to consolidate those calls points into this resize method so anyone can call directly. - void resize(Rect displayedBounds, boolean preserveWindows, boolean deferResume) { - Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "task.resize_" + getRootTaskId()); - mAtmService.deferWindowLayout(); - try { - // TODO: Why not just set this on the root task directly vs. on each tasks? - // Update override configurations of all tasks in the root task. - forAllTasks(task -> { - if (task.isResizeable()) { - task.setBounds(displayedBounds); - } - }, true /* traverseTopToBottom */); - - if (!deferResume) { - ensureVisibleActivitiesConfiguration(topRunningActivity(), preserveWindows); - } - } finally { - mAtmService.continueWindowLayout(); - Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); - } - } - boolean willActivityBeVisible(IBinder token) { final ActivityRecord r = ActivityRecord.forTokenLocked(token); if (r == null) { diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java index 5de143d91539..7f9e808c4c93 100644 --- a/services/core/java/com/android/server/wm/WallpaperController.java +++ b/services/core/java/com/android/server/wm/WallpaperController.java @@ -756,9 +756,7 @@ class WallpaperController { private void updateWallpaperTokens(boolean visible) { for (int curTokenNdx = mWallpaperTokens.size() - 1; curTokenNdx >= 0; curTokenNdx--) { final WallpaperWindowToken token = mWallpaperTokens.get(curTokenNdx); - if (token.updateWallpaperWindows(visible)) { - token.mDisplayContent.assignWindowLayers(false /* setLayoutNeeded */); - } + token.updateWallpaperWindows(visible); } } diff --git a/services/core/java/com/android/server/wm/WallpaperWindowToken.java b/services/core/java/com/android/server/wm/WallpaperWindowToken.java index 87f4ad42d8bf..210d5a5f480f 100644 --- a/services/core/java/com/android/server/wm/WallpaperWindowToken.java +++ b/services/core/java/com/android/server/wm/WallpaperWindowToken.java @@ -100,7 +100,7 @@ class WallpaperWindowToken extends WindowToken { } /** Returns {@code true} if visibility is changed. */ - boolean updateWallpaperWindows(boolean visible) { + void updateWallpaperWindows(boolean visible) { boolean changed = false; if (mVisibleRequested != visible) { ProtoLog.d(WM_DEBUG_WALLPAPER, "Wallpaper token %s visible=%b", @@ -117,7 +117,6 @@ class WallpaperWindowToken extends WindowToken { linkFixedRotationTransform(wallpaperTarget.mToken); } } - return changed; } final WindowState wallpaperTarget = @@ -143,7 +142,6 @@ class WallpaperWindowToken extends WindowToken { } setVisible(visible); - return changed; } private void setVisible(boolean visible) { diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index 67370524dc5e..9e94fdf957b3 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -265,14 +265,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< } /** - * Callback which is triggered while changing the parent, after setting up the surface but - * before asking the parent to assign child layers. - */ - interface PreAssignChildLayersCallback { - void onPreAssignChildLayers(); - } - - /** * True if this an AppWindowToken and the activity which created this was launched with * ActivityOptions.setLaunchTaskBehind. * @@ -605,11 +597,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< */ @Override void onParentChanged(ConfigurationContainer newParent, ConfigurationContainer oldParent) { - onParentChanged(newParent, oldParent, null); - } - - void onParentChanged(ConfigurationContainer newParent, ConfigurationContainer oldParent, - PreAssignChildLayersCallback callback) { super.onParentChanged(newParent, oldParent); if (mParent == null) { return; @@ -627,13 +614,8 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< reparentSurfaceControl(getSyncTransaction(), mParent.mSurfaceControl); } - if (callback != null) { - callback.onPreAssignChildLayers(); - } - // Either way we need to ask the parent to assign us a Z-order. mParent.assignChildLayers(); - scheduleAnimation(); } void createSurfaceControl(boolean force) { diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index b83f4231bd78..7295ee06da13 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -5358,7 +5358,6 @@ public class WindowManagerService extends IWindowManager.Stub public static final int ANIMATION_FAILSAFE = 60; public static final int RECOMPUTE_FOCUS = 61; public static final int ON_POINTER_DOWN_OUTSIDE_FOCUS = 62; - public static final int LAYOUT_AND_ASSIGN_WINDOW_LAYERS_IF_NEEDED = 63; public static final int WINDOW_STATE_BLAST_SYNC_TIMEOUT = 64; public static final int REPARENT_TASK_TO_DEFAULT_DISPLAY = 65; public static final int INSETS_CHANGED = 66; @@ -5635,14 +5634,6 @@ public class WindowManagerService extends IWindowManager.Stub } break; } - case LAYOUT_AND_ASSIGN_WINDOW_LAYERS_IF_NEEDED: { - synchronized (mGlobalLock) { - final DisplayContent displayContent = (DisplayContent) msg.obj; - displayContent.mLayoutAndAssignWindowLayersScheduled = false; - displayContent.layoutAndAssignWindowLayersIfNeeded(); - } - break; - } case WINDOW_STATE_BLAST_SYNC_TIMEOUT: { synchronized (mGlobalLock) { final WindowState ws = (WindowState) msg.obj; |