From c9c3b697634c0a4fb51e25bb632876002f270c45 Mon Sep 17 00:00:00 2001 From: Riddle Hsu Date: Fri, 6 Jan 2023 14:46:15 +0000 Subject: [PATCH] Reduce transaction to sf when creating surface There will be always surface placement after creating surface, which will apply the pending transaction. So the operation for color space doesn't need to be an additional transaction. Bug: 159103089 Test: CtsWindowManagerDeviceTestCases Change-Id: Ibb8f987cb814698f46120823b892eaa1ab4844a9 --- .../android/server/wm/WindowStateAnimator.java | 6 +++--- .../server/wm/WindowSurfaceController.java | 15 ++------------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index a0ba8fda906f8..373d17396128c 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -329,8 +329,8 @@ class WindowStateAnimator { mSurfaceController = new WindowSurfaceController(attrs.getTitle().toString(), format, flags, this, attrs.type); - mSurfaceController.setColorSpaceAgnostic((attrs.privateFlags - & WindowManager.LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC) != 0); + mSurfaceController.setColorSpaceAgnostic(w.getPendingTransaction(), + (attrs.privateFlags & LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC) != 0); w.setHasSurface(true); // The surface instance is changed. Make sure the input info can be applied to the @@ -531,7 +531,7 @@ class WindowStateAnimator { if (mSurfaceController == null) { return; } - mSurfaceController.setColorSpaceAgnostic(agnostic); + mSurfaceController.setColorSpaceAgnostic(mWin.getPendingTransaction(), agnostic); } /** diff --git a/services/core/java/com/android/server/wm/WindowSurfaceController.java b/services/core/java/com/android/server/wm/WindowSurfaceController.java index 4a5c4737cbbc3..607ce251c4d18 100644 --- a/services/core/java/com/android/server/wm/WindowSurfaceController.java +++ b/services/core/java/com/android/server/wm/WindowSurfaceController.java @@ -236,24 +236,13 @@ class WindowSurfaceController { } } - void setColorSpaceAgnostic(boolean agnostic) { + void setColorSpaceAgnostic(SurfaceControl.Transaction t, boolean agnostic) { ProtoLog.i(WM_SHOW_TRANSACTIONS, "SURFACE isColorSpaceAgnostic=%b: %s", agnostic, title); if (mSurfaceControl == null) { return; } - if (SHOW_LIGHT_TRANSACTIONS) { - Slog.i(TAG, ">>> OPEN TRANSACTION setColorSpaceAgnosticLocked"); - } - mService.openSurfaceTransaction(); - try { - getGlobalTransaction().setColorSpaceAgnostic(mSurfaceControl, agnostic); - } finally { - mService.closeSurfaceTransaction("setColorSpaceAgnostic"); - if (SHOW_LIGHT_TRANSACTIONS) { - Slog.i(TAG, "<<< CLOSE TRANSACTION setColorSpaceAgnosticLocked"); - } - } + t.setColorSpaceAgnostic(mSurfaceControl, agnostic); } boolean showRobustly(SurfaceControl.Transaction t) {