From 7b30d2d102d9ca9a2997f5033a6c3f8bcdb0a7c3 Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Sun, 8 Sep 2024 12:04:31 -0700 Subject: [PATCH] Pipe appTransition signal to taskbar to pause region sampling when it's ongoing Bug: 361593564 Test: https://android-build.corp.google.com/builds/abtd/run/L78300030006280283 Flag: EXEMPT bugfix Change-Id: Ib874e2b44c1cc59280da1250fd35f01572c39221 --- .../launcher3/taskbar/StashedHandleViewController.java | 8 +++++++- .../launcher3/taskbar/TaskbarActivityContext.java | 4 ++++ .../com/android/launcher3/taskbar/TaskbarManager.java | 10 +++++++++- .../com/android/quickstep/TouchInteractionService.java | 9 +++++++++ 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java index ec710c5229..fabf3a5acd 100644 --- a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java @@ -94,6 +94,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 mIsAppTransitionPending; private boolean mTaskbarHidden; private float mTranslationYForSwipe; @@ -267,6 +268,11 @@ public class StashedHandleViewController implements TaskbarControllers.LoggableT updateSamplingState(); } + public void setIsAppTransitionPending(boolean pending) { + mIsAppTransitionPending = pending; + updateSamplingState(); + } + private void updateSamplingState() { updateRegionSamplingWindowVisibility(); if (shouldSample()) { @@ -278,7 +284,7 @@ public class StashedHandleViewController implements TaskbarControllers.LoggableT } private boolean shouldSample() { - return mIsStashed && mIsLumaSamplingEnabled; + return mIsStashed && mIsLumaSamplingEnabled && !mIsAppTransitionPending; } protected void updateStashedHandleHintScale() { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 5f733b066e..041433213e 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -914,6 +914,10 @@ public class TaskbarActivityContext extends BaseTaskbarContext { mControllers.navbarButtonsViewController.transitionTo(barMode, animate); } + public void appTransitionPending(boolean pending) { + mControllers.stashedHandleViewController.setIsAppTransitionPending(pending); + } + /** * Called when this instance of taskbar is no longer needed */ diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 8c87fa65d5..8ecac96ad4 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -549,7 +549,15 @@ public class TaskbarManager { public void transitionTo(@BarTransitions.TransitionMode int barMode, boolean animate) { - mTaskbarActivityContext.transitionTo(barMode, animate); + if (mTaskbarActivityContext != null) { + mTaskbarActivityContext.transitionTo(barMode, animate); + } + } + + public void appTransitionPending(boolean pending) { + if (mTaskbarActivityContext != null) { + mTaskbarActivityContext.appTransitionPending(pending); + } } private boolean isTaskbarEnabled(DeviceProfile deviceProfile) { diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index 4587bdd0a4..98e7fed5fd 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -379,6 +379,15 @@ public class TouchInteractionService extends Service { )); } + @BinderThread + @Override + public void appTransitionPending(boolean pending) { + MAIN_EXECUTOR.execute(() -> executeForTouchInteractionService(tis -> + executeForTaskbarManager( + taskbarManager -> taskbarManager.appTransitionPending(pending)) + )); + } + /** * Preloads the Overview activity. *