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:
@@ -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)
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user