Merge "Disable color sampling while navigation bar is hidden" into qt-dev

This commit is contained in:
TreeHugger Robot
2019-06-20 05:11:20 +00:00
committed by Android (Google) Code Review
3 changed files with 15 additions and 3 deletions

View File

@@ -45,6 +45,7 @@ public class NavBarTintController implements View.OnAttachStateChangeListener,
private final NavigationBarView mNavigationBarView; private final NavigationBarView mNavigationBarView;
private final LightBarTransitionsController mLightBarController; private final LightBarTransitionsController mLightBarController;
private int mNavBarMode = NAV_BAR_MODE_3BUTTON; private int mNavBarMode = NAV_BAR_MODE_3BUTTON;
private boolean mWindowVisible;
private final CompositionSamplingListener mSamplingListener; private final CompositionSamplingListener mSamplingListener;
private final Runnable mUpdateSamplingListener = this::updateSamplingListener; private final Runnable mUpdateSamplingListener = this::updateSamplingListener;
@@ -148,7 +149,7 @@ public class NavBarTintController implements View.OnAttachStateChangeListener,
mSamplingListenerRegistered = false; mSamplingListenerRegistered = false;
CompositionSamplingListener.unregister(mSamplingListener); CompositionSamplingListener.unregister(mSamplingListener);
} }
if (mSamplingEnabled && !mSamplingBounds.isEmpty() if (mSamplingEnabled && mWindowVisible && !mSamplingBounds.isEmpty()
&& mNavigationBarView.isAttachedToWindow()) { && mNavigationBarView.isAttachedToWindow()) {
if (!mNavigationBarView.getViewRootImpl().getSurfaceControl().isValid()) { if (!mNavigationBarView.getViewRootImpl().getSurfaceControl().isValid()) {
// The view may still be attached, but the surface backing the window can be // 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) { public void onNavigationModeChanged(int mode) {
mNavBarMode = mode; mNavBarMode = mode;
} }
@@ -194,6 +200,7 @@ public class NavBarTintController implements View.OnAttachStateChangeListener,
pw.println(" mSamplingBounds: " + mSamplingBounds); pw.println(" mSamplingBounds: " + mSamplingBounds);
pw.println(" mLastMedianLuma: " + mLastMedianLuma); pw.println(" mLastMedianLuma: " + mLastMedianLuma);
pw.println(" mCurrentMedianLuma: " + mCurrentMedianLuma); pw.println(" mCurrentMedianLuma: " + mCurrentMedianLuma);
pw.println(" mWindowVisible: " + mWindowVisible);
} }
public static boolean isEnabled(Context context, int navBarMode) { public static boolean isEnabled(Context context, int navBarMode) {

View File

@@ -322,6 +322,7 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback
mNavigationBarView.getLightTransitionsController().restoreState(savedInstanceState); mNavigationBarView.getLightTransitionsController().restoreState(savedInstanceState);
} }
mNavigationBarView.setNavigationIconHints(mNavigationIconHints); mNavigationBarView.setNavigationIconHints(mNavigationIconHints);
mNavigationBarView.setWindowVisible(isNavBarWindowVisible());
prepareNavigationBarView(); prepareNavigationBarView();
checkNavBarModes(); checkNavBarModes();
@@ -467,8 +468,7 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback
if (DEBUG_WINDOW_STATE) Log.d(TAG, "Navigation bar " + windowStateToString(state)); if (DEBUG_WINDOW_STATE) Log.d(TAG, "Navigation bar " + windowStateToString(state));
updateSystemUiStateFlags(-1); updateSystemUiStateFlags(-1);
mNavigationBarView.getRotationButtonController().onNavigationBarWindowVisibilityChange( mNavigationBarView.setWindowVisible(isNavBarWindowVisible());
isNavBarWindowVisible());
} }
} }

View File

@@ -533,6 +533,11 @@ public class NavigationBarView extends FrameLayout implements
return KeyButtonDrawable.create(mContext, icon, hasShadow); return KeyButtonDrawable.create(mContext, icon, hasShadow);
} }
public void setWindowVisible(boolean visible) {
mTintController.setWindowVisible(visible);
mRotationButtonController.onNavigationBarWindowVisibilityChange(visible);
}
@Override @Override
public void setLayoutDirection(int layoutDirection) { public void setLayoutDirection(int layoutDirection) {
reloadNavIcons(); reloadNavIcons();