From 8af5e5d7513f7fc9e0ca40eeb0ecc7de3ed50d65 Mon Sep 17 00:00:00 2001 From: Johannes Gallmann Date: Tue, 18 Apr 2023 11:34:18 +0200 Subject: [PATCH] Optimize SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE flag update frequency Bug: 275121752 Test: Manual, i.e. observe Taskbar behaviour when pulling down notification shade and expanding quick settings (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:9bceeb3fdb2c003ddf79d71191bd0447ab4689ff) Change-Id: Id66485e7d717dd0ea1ef17904d33aca7b98043c6 --- .../shade/NotificationPanelViewController.java | 3 ++- .../statusbar/phone/CentralSurfacesImpl.java | 13 +++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java index 9e204e48da8e5..a80abaa93188b 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java @@ -3415,8 +3415,9 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump Log.d(TAG, "Updating panel sysui state flags: fullyExpanded=" + isFullyExpanded() + " inQs=" + mQsController.getExpanded()); } + boolean isPanelVisible = mCentralSurfaces != null && mCentralSurfaces.isPanelExpanded(); mSysUiState - .setFlag(SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE, getExpandedFraction() > 0) + .setFlag(SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE, isPanelVisible) .setFlag(SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED, isFullyExpanded() && !mQsController.getExpanded()) .setFlag(SYSUI_STATE_QUICK_SETTINGS_EXPANDED, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java index b3953a2515986..db20eeccf7631 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java @@ -1511,14 +1511,15 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { boolean tracking = event.getTracking(); dispatchPanelExpansionForKeyguardDismiss(fraction, tracking); - if (getShadeViewController() != null) { - getShadeViewController().updateSystemUiStateFlags(); - } - if (fraction == 0 || fraction == 1) { if (getNavigationBarView() != null) { getNavigationBarView().onStatusBarPanelStateChanged(); } + if (getShadeViewController() != null) { + // Needed to update SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED and + // SYSUI_STATE_QUICK_SETTINGS_EXPANDED + getShadeViewController().updateSystemUiStateFlags(); + } } } @@ -1526,6 +1527,10 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { void onShadeExpansionFullyChanged(Boolean isExpanded) { if (mPanelExpanded != isExpanded) { mPanelExpanded = isExpanded; + if (getShadeViewController() != null) { + // Needed to update SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE + getShadeViewController().updateSystemUiStateFlags(); + } if (isExpanded && mStatusBarStateController.getState() != StatusBarState.KEYGUARD) { if (DEBUG) { Log.v(TAG, "clearing notification effects from Height");