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

Commit 894210fe authored by Leon Scroggins III's avatar Leon Scroggins III
Browse files

Update transparent region when cutouts update

The transparent region is used to compute the blocking region for the
DPU. This needs to be updated when the cutouts change.

Call updateProtectionBoundingPath in onAttachedToWindow. It is called
the other times we call updateCutout.

Fixes: 225212638
Test: debug.screenshot_rounded_corners
Change-Id: Ib8e7e303b257947074ca9714f2cdaf3a3b7880ab
parent a49deeee
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -79,6 +79,8 @@ open class DisplayCutoutBaseView : View, RegionInterceptableView {
    override fun onAttachedToWindow() {
        super.onAttachedToWindow()
        updateCutout()
        updateProtectionBoundingPath()
        onUpdate()
    }

    fun onDisplayChanged(displayId: Int) {
@@ -93,6 +95,7 @@ open class DisplayCutoutBaseView : View, RegionInterceptableView {
        if (displayId == display.displayId) {
            updateCutout()
            updateProtectionBoundingPath()
            onUpdate()
        }
    }

@@ -100,8 +103,13 @@ open class DisplayCutoutBaseView : View, RegionInterceptableView {
        displayRotation = rotation
        updateCutout()
        updateProtectionBoundingPath()
        onUpdate()
    }

    // Called after the cutout and protection bounding path change. Subclasses
    // should make any changes that need to happen based on the change.
    open fun onUpdate() = Unit

    @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED)
    public override fun onDraw(canvas: Canvas) {
        super.onDraw(canvas)
+4 −0
Original line number Diff line number Diff line
@@ -114,6 +114,10 @@ class ScreenDecorHwcLayer(context: Context, displayDecorationSupport: DisplayDec
        }
    }

    override fun onUpdate() {
        parent.requestTransparentRegion(this)
    }

    override fun onDraw(canvas: Canvas) {
        // If updating onDraw, also update gatherTransparentRegion
        if (useInvertedAlphaColor) {