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

Commit aacd9886 authored by Rob Carr's avatar Rob Carr Committed by Android (Google) Code Review
Browse files

Merge "ViewRootImpl: Use mergeWithNextTransaction for updating bounds layer" into sc-dev

parents 0ee5f13d cec6bd9c
Loading
Loading
Loading
Loading
+4 −11
Original line number Original line Diff line number Diff line
@@ -1913,25 +1913,18 @@ public final class ViewRootImpl implements ViewParent,
    private boolean updateBoundsLayer(SurfaceControl.Transaction t) {
    private boolean updateBoundsLayer(SurfaceControl.Transaction t) {
        if (mBoundsLayer != null) {
        if (mBoundsLayer != null) {
            setBoundsLayerCrop(t);
            setBoundsLayerCrop(t);
            t.deferTransactionUntil(mBoundsLayer, getSurfaceControl(),
                mSurface.getNextFrameNumber());
            return true;
            return true;
        }
        }
        return false;
        return false;
    }
    }


    private void prepareSurfaces(boolean sizeChanged) {
    private void prepareSurfaces() {
        final SurfaceControl.Transaction t = mTransaction;
        final SurfaceControl.Transaction t = mTransaction;
        final SurfaceControl sc = getSurfaceControl();
        final SurfaceControl sc = getSurfaceControl();
        if (!sc.isValid()) return;
        if (!sc.isValid()) return;


        boolean applyTransaction = updateBoundsLayer(t);
        if (updateBoundsLayer(t)) {
        if (sizeChanged) {
              mergeWithNextTransaction(t, mSurface.getNextFrameNumber());
            applyTransaction = true;
            t.setBufferSize(sc, mSurfaceSize.x, mSurfaceSize.y);
        }
        if (applyTransaction) {
            t.apply();
        }
        }
    }
    }


@@ -3036,7 +3029,7 @@ public final class ViewRootImpl implements ViewParent,
            // stopping, but on the client side it doesn't get stopped since it's restarted quick
            // stopping, but on the client side it doesn't get stopped since it's restarted quick
            // enough. WMS doesn't want to keep around old children since they will leak when the
            // enough. WMS doesn't want to keep around old children since they will leak when the
            // client creates new children.
            // client creates new children.
            prepareSurfaces(surfaceSizeChanged);
            prepareSurfaces();
        }
        }


        final boolean didLayout = layoutRequested && (!mStopped || mReportNextDraw);
        final boolean didLayout = layoutRequested && (!mStopped || mReportNextDraw);