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

Commit 779a8514 authored by Nader Jawad's avatar Nader Jawad Committed by Android (Google) Code Review
Browse files

Merge "Holepunch layers for SurfaceView" into sc-dev

parents 779f120a 2dc632ae
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.Region;
import android.graphics.RenderNode;
@@ -670,10 +669,16 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
            if (mClipSurfaceToBounds && mClipBounds != null) {
                mTmpRect.intersect(mClipBounds);
            }
            canvas.drawRoundRect(mTmpRect.left, mTmpRect.top, mTmpRect.right, mTmpRect.bottom,
                    mCornerRadius, mCornerRadius, mRoundedViewportPaint);
            canvas.punchHole(
                    mTmpRect.left,
                    mTmpRect.top,
                    mTmpRect.right,
                    mTmpRect.bottom,
                    mCornerRadius,
                    mCornerRadius
            );
        } else {
            canvas.drawColor(0, PorterDuff.Mode.CLEAR);
            canvas.punchHole(0f, 0f, getWidth(), getHeight(), 0f, 0f);
        }
    }

+10 −0
Original line number Diff line number Diff line
@@ -670,6 +670,13 @@ public abstract class BaseCanvas {
                indices, indexOffset, indexCount, paint.getNativeInstance());
    }

    /**
     * @hide
     */
    public void punchHole(float left, float top, float right, float bottom, float rx, float ry) {
        nPunchHole(mNativeCanvasWrapper, left, top, right, bottom, rx, ry);
    }

    /**
     * @hide
     */
@@ -815,4 +822,7 @@ public abstract class BaseCanvas {

    private static native void nDrawTextOnPath(long nativeCanvas, String text, long nativePath,
            float hOffset, float vOffset, int flags, long nativePaint);

    private static native void nPunchHole(long renderer, float left, float top, float right,
            float bottom, float rx, float ry);
}
+12 −0
Original line number Diff line number Diff line
@@ -610,6 +610,14 @@ public class BaseRecordingCanvas extends Canvas {
                indices, indexOffset, indexCount, paint.getNativeInstance());
    }

    /**
     * @hide
     */
    @Override
    public void punchHole(float left, float top, float right, float bottom, float rx, float ry) {
        nPunchHole(mNativeCanvasWrapper, left, top, right, bottom, rx, ry);
    }

    @FastNative
    private static native void nDrawBitmap(long nativeCanvas, long bitmapHandle, float left,
            float top, long nativePaintOrZero, int canvasDensity, int screenDensity,
@@ -735,4 +743,8 @@ public class BaseRecordingCanvas extends Canvas {
    @FastNative
    private static native void nDrawTextOnPath(long nativeCanvas, String text, long nativePath,
            float hOffset, float vOffset, int flags, long nativePaint);

    @FastNative
    private static native void nPunchHole(long renderer, float left, float top, float right,
            float bottom, float rx, float ry);
}
+2 −0
Original line number Diff line number Diff line
@@ -464,10 +464,12 @@ cc_defaults {
        "canvas/CanvasOpBuffer.cpp",
        "canvas/CanvasOpRasterizer.cpp",
        "effects/StretchEffect.cpp",
        "pipeline/skia/HolePunch.cpp",
        "pipeline/skia/SkiaDisplayList.cpp",
        "pipeline/skia/SkiaRecordingCanvas.cpp",
        "pipeline/skia/RenderNodeDrawable.cpp",
        "pipeline/skia/ReorderBarrierDrawables.cpp",
        "pipeline/skia/TransformCanvas.cpp",
        "renderthread/Frame.cpp",
        "renderthread/RenderTask.cpp",
        "renderthread/TimeLord.cpp",
+4 −0
Original line number Diff line number Diff line
@@ -72,6 +72,10 @@ public:
        return mImpl && !(mImpl->isEmpty());
    }

    [[nodiscard]] bool hasHolePunches() const {
        return mImpl && mImpl->hasHolePunches();
    }

    [[nodiscard]] bool containsProjectionReceiver() const {
        return mImpl && mImpl->containsProjectionReceiver();
    }
Loading