diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavBarTintController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavBarTintController.java index 2f245fff18240..bfd17b9abc728 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavBarTintController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavBarTintController.java @@ -45,6 +45,7 @@ public class NavBarTintController implements View.OnAttachStateChangeListener, private final NavigationBarView mNavigationBarView; private final LightBarTransitionsController mLightBarController; private int mNavBarMode = NAV_BAR_MODE_3BUTTON; + private boolean mWindowVisible; private final CompositionSamplingListener mSamplingListener; private final Runnable mUpdateSamplingListener = this::updateSamplingListener; @@ -148,7 +149,7 @@ public class NavBarTintController implements View.OnAttachStateChangeListener, mSamplingListenerRegistered = false; CompositionSamplingListener.unregister(mSamplingListener); } - if (mSamplingEnabled && !mSamplingBounds.isEmpty() + if (mSamplingEnabled && mWindowVisible && !mSamplingBounds.isEmpty() && mNavigationBarView.isAttachedToWindow()) { if (!mNavigationBarView.getViewRootImpl().getSurfaceControl().isValid()) { // The view may still be attached, but the surface backing the window can be @@ -180,6 +181,11 @@ public class NavBarTintController implements View.OnAttachStateChangeListener, } } + public void setWindowVisible(boolean visible) { + mWindowVisible = visible; + requestUpdateSamplingListener(); + } + public void onNavigationModeChanged(int mode) { mNavBarMode = mode; } @@ -194,6 +200,7 @@ public class NavBarTintController implements View.OnAttachStateChangeListener, pw.println(" mSamplingBounds: " + mSamplingBounds); pw.println(" mLastMedianLuma: " + mLastMedianLuma); pw.println(" mCurrentMedianLuma: " + mCurrentMedianLuma); + pw.println(" mWindowVisible: " + mWindowVisible); } public static boolean isEnabled(Context context, int navBarMode) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java index b56abcdf9f178..e9731c5213086 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java @@ -322,6 +322,7 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback mNavigationBarView.getLightTransitionsController().restoreState(savedInstanceState); } mNavigationBarView.setNavigationIconHints(mNavigationIconHints); + mNavigationBarView.setWindowVisible(isNavBarWindowVisible()); prepareNavigationBarView(); checkNavBarModes(); @@ -467,8 +468,7 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback if (DEBUG_WINDOW_STATE) Log.d(TAG, "Navigation bar " + windowStateToString(state)); updateSystemUiStateFlags(-1); - mNavigationBarView.getRotationButtonController().onNavigationBarWindowVisibilityChange( - isNavBarWindowVisible()); + mNavigationBarView.setWindowVisible(isNavBarWindowVisible()); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 9919abd018dfc..776cd4d71c945 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -533,6 +533,11 @@ public class NavigationBarView extends FrameLayout implements return KeyButtonDrawable.create(mContext, icon, hasShadow); } + public void setWindowVisible(boolean visible) { + mTintController.setWindowVisible(visible); + mRotationButtonController.onNavigationBarWindowVisibilityChange(visible); + } + @Override public void setLayoutDirection(int layoutDirection) { reloadNavIcons();