Check for null bg insets during initialization

Test: Turn on Ambient sensing, toggle ambient sensing in settings
Fixes: 132264167
Change-Id: I7f19a91a7d78f8e6ae730871aebb6f7bfb30a0c5
This commit is contained in:
Jorim Jaggi
2019-05-08 23:08:02 +02:00
parent f9363aadeb
commit d798fd3f99

View File

@@ -1226,6 +1226,10 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
* are set.
*/
private void updateBackgroundDrawable() {
// Background insets can be null if super constructor calls setBackgroundDrawable.
if (mBackgroundInsets == null) {
mBackgroundInsets = Insets.NONE;
}
if (mBackgroundInsets.equals(mLastBackgroundInsets)
&& mLastOriginalBackgroundDrawable == mOriginalBackgroundDrawable) {
return;
@@ -1549,10 +1553,14 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
return;
}
setPadding(mFramePadding.left + mBackgroundPadding.left,
mFramePadding.top + mBackgroundPadding.top,
mFramePadding.right + mBackgroundPadding.right,
mFramePadding.bottom + mBackgroundPadding.bottom);
// Fields can be null if super constructor calls setBackgroundDrawable.
Rect framePadding = mFramePadding != null ? mFramePadding : new Rect();
Rect backgroundPadding = mBackgroundPadding != null ? mBackgroundPadding : new Rect();
setPadding(framePadding.left + backgroundPadding.left,
framePadding.top + backgroundPadding.top,
framePadding.right + backgroundPadding.right,
framePadding.bottom + backgroundPadding.bottom);
requestLayout();
invalidate();
@@ -1572,8 +1580,8 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
if (bg != null) {
if (fg == null) {
opacity = bg.getOpacity();
} else if (mFramePadding.left <= 0 && mFramePadding.top <= 0
&& mFramePadding.right <= 0 && mFramePadding.bottom <= 0) {
} else if (framePadding.left <= 0 && framePadding.top <= 0
&& framePadding.right <= 0 && framePadding.bottom <= 0) {
// If the frame padding is zero, then we can be opaque
// if either the frame -or- the background is opaque.
int fop = fg.getOpacity();