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

Commit 32dfc983 authored by Brett Chabot's avatar Brett Chabot
Browse files

Fix input when hardware renderer drawing is disabled.

When drawing is disabled the window's layer won't have a valid buffer. This
causes surfaceflinger to set the window's touchableRegion to zero.
This commit sets a window crop when drawing is disabled, so surfaceflinger
set touchableregion from crop instead of buffer.
And it modifies LetterboxUiController to not reset the crop.

Test: cts and perf tests as documented in go/android-slimulator-dev-env
Bug: 229870984
Change-Id: I4d6ca513c3daf5818ded03eae00e551fc319ad69
parent 3226bed7
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -8225,6 +8225,7 @@ public final class ViewRootImpl implements ViewParent,
                    mLastSyncSeqId, mTmpFrames, mPendingMergedConfiguration, mSurfaceControl,
                    mTempInsets, mTempControls, mRelayoutBundle);
            mRelayoutRequested = true;

            final int maybeSyncSeqId = mRelayoutBundle.getInt("seqid");
            if (maybeSyncSeqId > 0) {
                mSyncSeqId = maybeSyncSeqId;
@@ -8265,6 +8266,12 @@ public final class ViewRootImpl implements ViewParent,
            }
        }

        if (mSurfaceControl.isValid() && !HardwareRenderer.isDrawingEnabled()) {
            // When drawing is disabled the window layer won't have a valid buffer.
            // Set a window crop so input can get delivered to the window.
            mTransaction.setWindowCrop(mSurfaceControl, mSurfaceSize.x, mSurfaceSize.y).apply();
        }

        mLastTransformHint = transformHint;
      
        mSurfaceControl.setTransformHint(transformHint);
+1 −1
Original line number Diff line number Diff line
@@ -481,7 +481,7 @@ final class LetterboxUiController {
    }

    private void updateRoundedCorners(WindowState mainWindow) {
        final SurfaceControl windowSurface = mainWindow.getClientViewRootSurface();
        final SurfaceControl windowSurface = mainWindow.getSurfaceControl();
        if (windowSurface != null && windowSurface.isValid()) {
            final Transaction transaction = mActivityRecord.getSyncTransaction();