From cf5407dfc68fa283e251243f576f6f88f7bcd5c9 Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Tue, 9 Jan 2024 15:00:36 -0800 Subject: [PATCH] Hook up luma sampling state change from CommandQueue Currently when swiping up from some apps (maps), the stashed task bar color changes. Instead, sampling should be disabled during the transition (with a signal from the frameworks). Bug: 230395757 Test: Swipe up from maps. Make sure the bar color doesn't change during transition to overview Change-Id: Ifc30f4067a0e4d134b422d152f5b5caee0a77a33 --- .../taskbar/StashedHandleViewController.java | 24 +++++++++++++++++-- .../taskbar/TaskbarActivityContext.java | 7 ++++++ .../launcher3/taskbar/TaskbarManager.java | 8 +++++++ .../launcher3/taskbar/TaskbarSharedState.java | 4 ++++ .../quickstep/TouchInteractionService.java | 6 +++++ 5 files changed, 47 insertions(+), 2 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java index e5a6021416..382276aa0c 100644 --- a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java @@ -15,6 +15,8 @@ */ package com.android.launcher3.taskbar; +import static android.view.Display.DEFAULT_DISPLAY; + import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NAV_BAR_HIDDEN; import android.animation.Animator; @@ -83,6 +85,7 @@ public class StashedHandleViewController implements TaskbarControllers.LoggableT // States that affect whether region sampling is enabled or not private boolean mIsStashed; + private boolean mIsLumaSamplingEnabled; private boolean mTaskbarHidden; private float mTranslationYForSwipe; @@ -234,8 +237,21 @@ public class StashedHandleViewController implements TaskbarControllers.LoggableT /** Called when taskbar is stashed or unstashed. */ public void onIsStashedChanged() { mIsStashed = isStashedHandleVisible(); + updateSamplingState(); + } + + public void onNavigationBarLumaSamplingEnabled(int displayId, boolean enable) { + if (DEFAULT_DISPLAY != displayId) { + return; + } + + mIsLumaSamplingEnabled = enable; + updateSamplingState(); + } + + private void updateSamplingState() { updateRegionSamplingWindowVisibility(); - if (mIsStashed) { + if (shouldSample()) { mStashedHandleView.updateSampledRegion(mStashedHandleBounds); mRegionSamplingHelper.start(mStashedHandleView.getSampledRegion()); } else { @@ -243,6 +259,10 @@ public class StashedHandleViewController implements TaskbarControllers.LoggableT } } + private boolean shouldSample() { + return mIsStashed && mIsLumaSamplingEnabled; + } + protected void updateStashedHandleHintScale() { mStashedHandleView.setScaleX(mTaskbarStashedHandleHintScale.value); mStashedHandleView.setScaleY(mTaskbarStashedHandleHintScale.value); @@ -282,7 +302,7 @@ public class StashedHandleViewController implements TaskbarControllers.LoggableT } private void updateRegionSamplingWindowVisibility() { - mRegionSamplingHelper.setWindowVisible(mIsStashed && !mTaskbarHidden); + mRegionSamplingHelper.setWindowVisible(shouldSample() && !mTaskbarHidden); } public boolean isStashedHandleVisible() { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 913ca6c17d..7ad2c684ae 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -377,6 +377,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext { onSystemBarAttributesChanged(sharedState.systemBarAttrsDisplayId, sharedState.systemBarAttrsBehavior); onNavButtonsDarkIntensityChanged(sharedState.navButtonsDarkIntensity); + onNavigationBarLumaSamplingEnabled(sharedState.mLumaSamplingDisplayId, + sharedState.mIsLumaSamplingEnabled); if (ENABLE_TASKBAR_NAVBAR_UNIFICATION) { // W/ the flag not set this entire class gets re-created, which resets the value of @@ -845,6 +847,11 @@ public class TaskbarActivityContext extends BaseTaskbarContext { .updateValue(darkIntensity); } + public void onNavigationBarLumaSamplingEnabled(int displayId, boolean enable) { + mControllers.stashedHandleViewController.onNavigationBarLumaSamplingEnabled(displayId, + enable); + } + /** * Called to update a {@link AutohideSuspendFlag} with a new value. */ diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index a2e5e81823..c8719e7524 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -540,6 +540,14 @@ public class TaskbarManager { } } + public void onNavigationBarLumaSamplingEnabled(int displayId, boolean enable) { + mSharedState.mLumaSamplingDisplayId = displayId; + mSharedState.mIsLumaSamplingEnabled = enable; + if (mTaskbarActivityContext != null) { + mTaskbarActivityContext.onNavigationBarLumaSamplingEnabled(displayId, enable); + } + } + private void removeActivityCallbacksAndListeners() { if (mActivity != null) { mActivity.removeOnDeviceProfileChangeListener(mDebugActivityDeviceProfileChanged); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java index d09f74c65a..41b777b4e1 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java @@ -52,6 +52,10 @@ public class TaskbarSharedState { // TaskbarManager#onNavButtonsDarkIntensityChanged() public float navButtonsDarkIntensity; + // TaskbarManager#onNavigationBarLumaSamplingEnabled() + public int mLumaSamplingDisplayId; + public boolean mIsLumaSamplingEnabled; + public boolean setupUIVisible = false; public boolean allAppsVisible = false; diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index 6f45caffc1..9972e59750 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -372,6 +372,12 @@ public class TouchInteractionService extends Service { taskbarManager.onNavButtonsDarkIntensityChanged(darkIntensity)); } + @Override + public void onNavigationBarLumaSamplingEnabled(int displayId, boolean enable) { + executeForTaskbarManager(taskbarManager -> + taskbarManager.onNavigationBarLumaSamplingEnabled(displayId, enable)); + } + private void executeForTouchInteractionService( @NonNull Consumer tisConsumer) { TouchInteractionService tis = mTis.get();