diff options
| author | 2023-07-25 17:05:54 +0000 | |
|---|---|---|
| committer | 2023-07-25 17:05:54 +0000 | |
| commit | de6be5fa7cae2de825bca05153a5e16efb03d111 (patch) | |
| tree | 476dde5c598a82ecaaf70510e2e05c9e543870ad | |
| parent | 090040d7d2ee476d1ee18a3ac5fd97aec3725361 (diff) | |
| parent | 15fcf5b7e3484263dd9053558e374f206f5be280 (diff) | |
Merge "Avoid waiting for drawn window without change" into udc-qpr-dev am: 15fcf5b7e3
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24104763
Change-Id: I9c57fa1e1ddcd693814a42a782f40c2e4f26fbda
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
5 files changed, 11 insertions, 10 deletions
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index d1e236abb253..140255b2f016 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -5703,8 +5703,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // window becomes visible while the sync group is still active. return true; } - if (mSyncState == SYNC_STATE_WAITING_FOR_DRAW && mWinAnimator.mDrawState == HAS_DRAWN - && !mRedrawForSyncReported && !mWmService.mResizingWindows.contains(this)) { + if (mSyncState == SYNC_STATE_WAITING_FOR_DRAW && mLastConfigReportedToClient && isDrawn()) { // Complete the sync state immediately for a drawn window that doesn't need to redraw. onSyncFinishedDrawing(); } diff --git a/services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java b/services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java index fc5e9cab5447..810cbe8f8080 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java @@ -40,9 +40,7 @@ import static org.mockito.ArgumentMatchers.notNull; import static org.mockito.Mockito.spy; import android.platform.test.annotations.Presubmit; -import android.util.MergedConfiguration; import android.view.SurfaceControl; -import android.window.ClientWindowFrames; import androidx.test.filters.SmallTest; @@ -333,8 +331,7 @@ public class SyncEngineTests extends WindowTestsBase { w.reparent(botChildWC, POSITION_TOP); parentWC.prepareSync(); // Assume the window has drawn with the latest configuration. - w.fillClientWindowFramesAndConfiguration(new ClientWindowFrames(), - new MergedConfiguration(), true /* useLatestConfig */, true /* relayoutVisible */); + makeLastConfigReportedToClient(w, true /* visible */); assertTrue(w.onSyncFinishedDrawing()); assertEquals(SYNC_STATE_READY, w.mSyncState); w.reparent(topChildWC, POSITION_TOP); diff --git a/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java index 4afcd0539b94..e3d1b9c669f9 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java @@ -52,7 +52,6 @@ import android.graphics.Rect; import android.os.IBinder; import android.os.RemoteException; import android.platform.test.annotations.Presubmit; -import android.util.MergedConfiguration; import android.view.DisplayCutout; import android.view.DisplayInfo; import android.view.DisplayShape; @@ -63,7 +62,6 @@ import android.view.RoundedCorners; import android.view.Surface; import android.view.SurfaceControl; import android.view.WindowManager; -import android.window.ClientWindowFrames; import androidx.test.filters.SmallTest; @@ -380,8 +378,7 @@ public class WallpaperControllerTests extends WindowTestsBase { wallpaperWindow.mLayoutSeq = mDisplayContent.mLayoutSeq; // Assume the token was invisible and the latest config was reported. wallpaperToken.commitVisibility(false); - wallpaperWindow.fillClientWindowFramesAndConfiguration(new ClientWindowFrames(), - new MergedConfiguration(), true /* useLatestConfig */, false /* relayoutVisible */); + makeLastConfigReportedToClient(wallpaperWindow, false /* visible */); assertTrue(wallpaperWindow.isLastConfigReportedToClient()); final Rect bounds = wallpaperToken.getBounds(); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java index 600681fb332c..7168670f9652 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java @@ -1247,6 +1247,7 @@ public class WindowOrganizerTests extends WindowTestsBase { // A drawn window can complete the sync state automatically. w1.mWinAnimator.mDrawState = WindowStateAnimator.HAS_DRAWN; + makeLastConfigReportedToClient(w1, true /* visible */); mWm.mSyncEngine.onSurfacePlacement(); verify(mockCallback).onTransactionReady(anyInt(), any()); assertFalse(w1.useBLASTSync()); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java index d5547ec69247..873c7f4e0e30 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java @@ -85,6 +85,7 @@ import android.os.RemoteException; import android.os.UserHandle; import android.provider.Settings; import android.service.voice.IVoiceInteractionSession; +import android.util.MergedConfiguration; import android.util.SparseArray; import android.view.Display; import android.view.DisplayInfo; @@ -102,6 +103,7 @@ import android.view.WindowInsets; import android.view.WindowManager; import android.view.WindowManager.DisplayImePolicy; import android.view.inputmethod.ImeTracker; +import android.window.ClientWindowFrames; import android.window.ITransitionPlayer; import android.window.ScreenCapture; import android.window.StartingWindowInfo; @@ -624,6 +626,11 @@ class WindowTestsBase extends SystemServiceTestsBase { } } + static void makeLastConfigReportedToClient(WindowState w, boolean visible) { + w.fillClientWindowFramesAndConfiguration(new ClientWindowFrames(), + new MergedConfiguration(), true /* useLatestConfig */, visible); + } + /** * Gets the order of the given {@link Task} as its z-order in the hierarchy below this TDA. * The Task can be a direct child of a child TaskDisplayArea. {@code -1} if not found. |