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

Commit e9c2e84d authored by Robert Carr's avatar Robert Carr
Browse files

ViewRootImpl: Use mWindowAttributes directly for BBQ

The logic we are using to handle the params == null case doesn't make
sense, params=null just indicates nothing was changing on this relayout
and so we avoid passing to WM, not that we should default the format. We
can just use mWindowAttributes directly to avoid this problem.

Test: Existing tests pass
Bug: 190483641
Change-Id: I4a765914eb8ca33a432fc808af96847bb78fb054
parent 74c65d26
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -1948,22 +1948,23 @@ public final class ViewRootImpl implements ViewParent,
       return mBoundsLayer;
    }

    Surface getOrCreateBLASTSurface(int width, int height,
            @Nullable WindowManager.LayoutParams params) {
    Surface getOrCreateBLASTSurface() {
        if (!mSurfaceControl.isValid()) {
            return null;
        }

        int format = params == null ? PixelFormat.TRANSLUCENT : params.format;
        Surface ret = null;
        if (mBlastBufferQueue == null) {
            mBlastBufferQueue = new BLASTBufferQueue(mTag, mSurfaceControl, width, height,
                    format);
            mBlastBufferQueue = new BLASTBufferQueue(mTag, mSurfaceControl,
                mSurfaceSize.x, mSurfaceSize.y,
                mWindowAttributes.format);
            // We only return the Surface the first time, as otherwise
            // it hasn't changed and there is no need to update.
            ret = mBlastBufferQueue.createSurface();
        } else {
            mBlastBufferQueue.update(mSurfaceControl, width, height, format);
            mBlastBufferQueue.update(mSurfaceControl,
                mSurfaceSize.x, mSurfaceSize.y,
                mWindowAttributes.format);
        }

        return ret;
@@ -7769,8 +7770,7 @@ public final class ViewRootImpl implements ViewParent,
            if (!useBLAST()) {
                mSurface.copyFrom(mSurfaceControl);
            } else {
                final Surface blastSurface = getOrCreateBLASTSurface(mSurfaceSize.x, mSurfaceSize.y,
                        params);
                final Surface blastSurface = getOrCreateBLASTSurface();
                // If blastSurface == null that means it hasn't changed since the last time we
                // called. In this situation, avoid calling transferFrom as we would then
                // inc the generation ID and cause EGL resources to be recreated.