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

Commit aff17522 authored by John Reck's avatar John Reck
Browse files

Fix GCA crop

Bug: 309019803
Test: open camera; atest android.uirendering.cts.testclasses.SurfaceViewTests#surfaceViewScaledClip
Change-Id: Ic0b8ba9cf47ffdb77af6858f3e9a19ee801489d8
parent 8505f344
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -3280,7 +3280,8 @@ public final class SurfaceControl implements Parcelable {
                        "setCrop", this, sc, "crop=" + crop);
            }
            if (crop != null) {
                Preconditions.checkArgument(crop.isValid(), "Crop isn't valid.");
                Preconditions.checkArgument(crop.isValid(), "Crop " + crop
                        + " isn't valid");
                nativeSetWindowCrop(mNativeObject, sc.mNativeObject,
                        crop.left, crop.top, crop.right, crop.bottom);
            } else {
+15 −6
Original line number Diff line number Diff line
@@ -1523,15 +1523,24 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
                    if (mSurfaceControl == null) return;

                    mRTLastReportedPosition.set(left, top, right, bottom);
                    final float postScaleX = mRTLastReportedPosition.width()
                            / (float) mRtSurfaceWidth;
                    final float postScaleY = mRTLastReportedPosition.height()
                            / (float) mRtSurfaceHeight;
                    onSetSurfacePositionAndScale(mPositionChangedTransaction, mSurfaceControl,
                            mRTLastReportedPosition.left /*positionLeft*/,
                            mRTLastReportedPosition.top /*positionTop*/,
                            mRTLastReportedPosition.width()
                                    / (float) mRtSurfaceWidth /*postScaleX*/,
                            mRTLastReportedPosition.height()
                                    / (float) mRtSurfaceHeight /*postScaleY*/);
                            postScaleX, postScaleY);

                    mRTLastSetCrop.set(clipLeft, clipTop, clipRight, clipBottom);
                    mRTLastSetCrop.set((int) (clipLeft / postScaleX), (int) (clipTop / postScaleY),
                            (int) Math.ceil(clipRight / postScaleX),
                            (int) Math.ceil(clipBottom / postScaleY));
                    if (DEBUG_POSITION) {
                        Log.d(TAG, String.format("Setting layer crop = [%d, %d, %d, %d] "
                                        + "from scale %f, %f", mRTLastSetCrop.left,
                                mRTLastSetCrop.top, mRTLastSetCrop.right, mRTLastSetCrop.bottom,
                                postScaleX, postScaleY));
                    }
                    mPositionChangedTransaction.setCrop(mSurfaceControl, mRTLastSetCrop);
                    if (mRTLastSetCrop.isEmpty()) {
                        mPositionChangedTransaction.hide(mSurfaceControl);