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
This commit is contained in:
Leon Scroggins III
2022-03-18 17:06:04 -04:00
parent a49deeee4a
commit 894210fea9
2 changed files with 12 additions and 0 deletions

View File

@@ -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)

View File

@@ -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) {