diff options
3 files changed, 27 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java index a64e862000fc..5efc5755316e 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java @@ -81,6 +81,7 @@ import com.android.systemui.doze.DozeReceiver; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.keyguard.data.repository.BiometricType; +import com.android.systemui.log.core.LogLevel; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.VibratorHelper; import com.android.systemui.util.concurrency.DelayableExecutor; @@ -158,7 +159,7 @@ public class AuthController implements CoreStartable, CommandQueue.Callbacks, @Nullable private UdfpsOverlayParams mUdfpsOverlayParams; @Nullable private IUdfpsRefreshRateRequestCallback mUdfpsRefreshRateRequestCallback; @Nullable private SideFpsController mSideFpsController; - @Nullable private UdfpsLogger mUdfpsLogger; + @NonNull private UdfpsLogger mUdfpsLogger; @VisibleForTesting IBiometricSysuiReceiver mReceiver; @VisibleForTesting @NonNull final BiometricDisplayListener mOrientationListener; @Nullable private final List<FaceSensorPropertiesInternal> mFaceProps; @@ -930,6 +931,23 @@ public class AuthController implements CoreStartable, CommandQueue.Callbacks, return mUdfpsRefreshRateRequestCallback; } + /** + * Requests (or stops requesting) the max refresh rate. This can override user settings + * for the max refresh rate. + */ + public void requestMaxRefreshRate(boolean request) throws RemoteException { + if (mUdfpsRefreshRateRequestCallback == null) { + mUdfpsLogger.log( + "PreAuthRefreshRate", + "skip request - refreshRateCallback is null", + LogLevel.DEBUG + ); + return; + } + mUdfpsLogger.requestMaxRefreshRate(request); + mUdfpsRefreshRateRequestCallback.onAuthenticationPossible(mContext.getDisplayId(), request); + } + @Override public void showAuthenticationDialog(PromptInfo promptInfo, IBiometricSysuiReceiver receiver, int[] sensorIds, boolean credentialAllowed, boolean requireConfirmation, diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsLogger.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsLogger.kt index 2102a1f72be2..65df8fdd4da4 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsLogger.kt @@ -42,4 +42,8 @@ class UdfpsLogger @Inject constructor(@UdfpsLog private val logBuffer: LogBuffer fun log(tag: String, @CompileTimeConstant msg: String, level: LogLevel) { logBuffer.log(tag, level, msg) } + + fun requestMaxRefreshRate(request: Boolean) { + logBuffer.log("RefreshRate", LogLevel.DEBUG, { bool1 = request }, { "Request max: $bool1" }) + } } diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java index 04263882d3a8..d30361b4904d 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java @@ -352,7 +352,10 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW && !state.keyguardFadingAway && !state.keyguardGoingAway; if (onKeyguard && mAuthController.isUdfpsEnrolled(mUserInteractor.get().getSelectedUserId())) { - // both max and min display refresh rate must be set to take effect: + // Requests the max refresh rate (ie: for smooth display). Note: By setting + // the preferred refresh rates below, the refresh rate will not override the max + // refresh rate in settings (ie: if smooth display is OFF). + // Both max and min display refresh rate must be set to take effect: mLpChanged.preferredMaxDisplayRefreshRate = mKeyguardPreferredRefreshRate; mLpChanged.preferredMinDisplayRefreshRate = mKeyguardPreferredRefreshRate; } else { |