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

Commit 253e9845 authored by Rob Carr's avatar Rob Carr Committed by Automerger Merge Worker
Browse files

Merge "BLASTBufferQueue: Fix two conditions leading to freeze." into rvc-dev...

Merge "BLASTBufferQueue: Fix two conditions leading to freeze." into rvc-dev am: 85c13cf1 am: 5e657a89

Change-Id: If25cf0ba3096ee5dcfafd8d790182e5fc91b1d1e
parents 716bb1ee 5e657a89
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -704,6 +704,11 @@ public final class ViewRootImpl implements ViewParent,
    // draw returns.
    private SurfaceControl.Transaction mRtBLASTSyncTransaction = new SurfaceControl.Transaction();

    // Keeps track of whether the WM requested us to use BLAST Sync when calling relayout.
    //  We use this to make sure we don't send the WM transactions from an internal BLAST sync
    // (e.g. SurfaceView)
    private boolean mSendNextFrameToWm = false;

    private HashSet<ScrollCaptureCallback> mRootScrollCaptureCallbacks;

    private String mTag = TAG;
@@ -3053,6 +3058,7 @@ public final class ViewRootImpl implements ViewParent,
        if ((relayoutResult & WindowManagerGlobal.RELAYOUT_RES_BLAST_SYNC) != 0) {
            reportNextDraw();
            setUseBLASTSyncTransaction();
            mSendNextFrameToWm = true;
        }

        boolean cancelDraw = mAttachInfo.mTreeObserver.dispatchOnPreDraw() || !isViewVisible;
@@ -3762,7 +3768,7 @@ public final class ViewRootImpl implements ViewParent,
            if (needFrameCompleteCallback) {
                final Handler handler = mAttachInfo.mHandler;
                mAttachInfo.mThreadedRenderer.setFrameCompleteCallback((long frameNr) -> {
                        finishBLASTSync(!reportNextDraw);
                        finishBLASTSync(!mSendNextFrameToWm);
                        handler.postAtFrontOfQueue(() -> {
                            if (reportNextDraw) {
                                // TODO: Use the frame number
@@ -3784,7 +3790,7 @@ public final class ViewRootImpl implements ViewParent,
                // so if we are BLAST syncing we make sure the previous draw has
                // totally finished.
                if (mAttachInfo.mThreadedRenderer != null) {
                    mAttachInfo.mThreadedRenderer.fence();
                    mAttachInfo.mThreadedRenderer.pause();
                }

                mNextReportConsumeBLAST = true;
@@ -9757,6 +9763,7 @@ public final class ViewRootImpl implements ViewParent,
    }

    private void finishBLASTSync(boolean apply) {
        mSendNextFrameToWm = false;
        if (mNextReportConsumeBLAST) {
            mNextReportConsumeBLAST = false;