From 8bce18a562941408b9cee01f606318b52dd9883e Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Sat, 11 Feb 2023 01:02:35 +0000 Subject: [PATCH] Update region sampling to account for window visibility - Similar to the nav bar, we should also disable region sampling then the window is no longer visible (ie. when in immersive mode) otherwise we fall back into gpu composition which consumes more battery Fixes: 268280575 Test: Enter immersive mode and verify region sampling is disabled Change-Id: I99bf8986c6f22fd8d480d255d10cfcd39cfb79e3 --- .../taskbar/StashedHandleViewController.java | 19 ++++++++++++++++++- .../taskbar/TaskbarActivityContext.java | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java index 74e73754df..0f25ba1da6 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 com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NAV_BAR_HIDDEN; + import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; @@ -36,6 +38,7 @@ import com.android.launcher3.util.Executors; import com.android.launcher3.util.MultiPropertyFactory; import com.android.launcher3.util.MultiValueAlpha; import com.android.systemui.shared.navigationbar.RegionSamplingHelper; +import com.android.systemui.shared.system.QuickStepContract; import java.io.PrintWriter; @@ -78,6 +81,10 @@ public class StashedHandleViewController implements TaskbarControllers.LoggableT private float mStartProgressForNextRevealAnim; private boolean mWasLastRevealAnimReversed; + // States that affect whether region sampling is enabled or not + private boolean mIsStashed; + private boolean mTaskbarHidden; + public StashedHandleViewController(TaskbarActivityContext activity, StashedHandleView stashedHandleView) { mActivity = activity; @@ -218,7 +225,8 @@ public class StashedHandleViewController implements TaskbarControllers.LoggableT /** Called when taskbar is stashed or unstashed. */ public void onIsStashedChanged(boolean isStashed) { - mRegionSamplingHelper.setWindowVisible(isStashed); + mIsStashed = isStashed; + updateRegionSamplingWindowVisibility(); if (isStashed) { mStashedHandleView.updateSampledRegion(mStashedHandleBounds); mRegionSamplingHelper.start(mStashedHandleView.getSampledRegion()); @@ -247,6 +255,15 @@ public class StashedHandleViewController implements TaskbarControllers.LoggableT homeDisabled ? 0 : 1); } + public void updateStateForSysuiFlags(int systemUiStateFlags) { + mTaskbarHidden = (systemUiStateFlags & SYSUI_STATE_NAV_BAR_HIDDEN) != 0; + updateRegionSamplingWindowVisibility(); + } + + private void updateRegionSamplingWindowVisibility() { + mRegionSamplingHelper.setWindowVisible(mIsStashed && !mTaskbarHidden); + } + public boolean isStashedHandleVisible() { return mStashedHandleView.getVisibility() == View.VISIBLE; } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index c36cd99560..3ade50b60a 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -570,6 +570,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext { || isNavBarKidsModeActive()); mControllers.stashedHandleViewController.setIsHomeButtonDisabled( mControllers.navbarButtonsViewController.isHomeDisabled()); + mControllers.stashedHandleViewController.updateStateForSysuiFlags(systemUiStateFlags); mControllers.taskbarKeyguardController.updateStateForSysuiFlags(systemUiStateFlags); mControllers.taskbarStashController.updateStateForSysuiFlags( systemUiStateFlags, fromInit || !isUserSetupComplete());