Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c9c3b697 authored by Riddle Hsu's avatar Riddle Hsu
Browse files

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
parent 099f8243
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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);
    }

    /**
+2 −13
Original line number Diff line number Diff line
@@ -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) {