summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskSupervisor.java18
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java1
-rw-r--r--services/core/java/com/android/server/wm/InsetsSourceProvider.java6
-rw-r--r--services/core/java/com/android/server/wm/Task.java49
-rw-r--r--services/core/java/com/android/server/wm/WallpaperController.java4
-rw-r--r--services/core/java/com/android/server/wm/WallpaperWindowToken.java4
-rw-r--r--services/core/java/com/android/server/wm/WindowContainer.java18
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java9
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;