From 51e10d63307abf377f9581890c92f257e8d396f5 Mon Sep 17 00:00:00 2001 From: Evan Rosky Date: Mon, 15 Mar 2021 12:07:22 -0700 Subject: [PATCH] More Sync in More Places Some operations weren't being done in sync transactions. This adds sync in a couple more places where it makes sense (particularly for display changes which aren't relevant until display changes are part of transitions). This also re-orders sync update on parent-change since onParentChanged sometimes does work and needs to have an accurate transaction to put it on. Bug: 179270750 Test: existing tests pass, system behavior doesn't change. Change-Id: I6eb0b541a88805ab7459175e163563ed869cdc8e --- services/core/java/com/android/server/wm/ActivityRecord.java | 4 ++-- services/core/java/com/android/server/wm/DisplayContent.java | 2 +- services/core/java/com/android/server/wm/WindowContainer.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index db3d7ad0c3982..092587ce854d2 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -1519,7 +1519,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A private void setCornersRadius(WindowState mainWindow, int cornersRadius) { final SurfaceControl windowSurface = mainWindow.getClientViewRootSurface(); if (windowSurface != null && windowSurface.isValid()) { - Transaction transaction = getPendingTransaction(); + Transaction transaction = getSyncTransaction(); transaction.setCornerRadius(windowSurface, cornersRadius); } } @@ -1531,7 +1531,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } layoutLetterbox(winHint); if (mLetterbox != null && mLetterbox.needsApplySurfaceChanges()) { - mLetterbox.applySurfaceChanges(getPendingTransaction()); + mLetterbox.applySurfaceChanges(getSyncTransaction()); } } diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 426e63181ff10..f235a2ec85cb9 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -3426,7 +3426,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp /** Updates the layer assignment of windows on this display. */ void assignWindowLayers(boolean setLayoutNeeded) { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "assignWindowLayers"); - assignChildLayers(getPendingTransaction()); + assignChildLayers(getSyncTransaction()); if (setLayoutNeeded) { setLayoutNeeded(); } diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index 8d859584d5f5f..f5a02d6ee3fb7 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -389,12 +389,12 @@ class WindowContainer extends ConfigurationContainer< mParent.onChildAdded(this); } if (!mReparenting) { + onSyncReparent(oldParent, mParent); if (mParent != null && mParent.mDisplayContent != null && mDisplayContent != mParent.mDisplayContent) { onDisplayChanged(mParent.mDisplayContent); } onParentChanged(mParent, oldParent); - onSyncReparent(oldParent, mParent); } }