diff options
author | 2024-02-15 13:59:30 +0000 | |
---|---|---|
committer | 2024-02-15 13:59:30 +0000 | |
commit | 35ff51a41a44f9a0b4b8fb8bbec1df135b6cb2b9 (patch) | |
tree | 467d47adcded6b630a0da4d146199b1deb07accb | |
parent | 6243488b027eccf2d53d1fdf0a6bab1871b91a1a (diff) | |
parent | 449fc406c8e47e4644c200dc0156c3ff971cf123 (diff) |
Merge "Set power mode to MODE_FIXED_PERFORMANCE during a user switch." into main
-rw-r--r-- | services/core/java/com/android/server/am/UserController.java | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 55ac4cf37283..34ba7f0debb0 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -97,6 +97,7 @@ import android.os.IProgressListener; import android.os.IRemoteCallback; import android.os.IUserManager; import android.os.Message; +import android.os.PowerManagerInternal; import android.os.PowerWhitelistManager; import android.os.Process; import android.os.RemoteCallbackList; @@ -1934,9 +1935,12 @@ class UserController implements Handler.Callback { } /** - * Start user, if its not already running, and bring it to foreground. + * Start user, if it's not already running, and bring it to foreground. */ void startUserInForeground(@UserIdInt int targetUserId) { + if (android.multiuser.Flags.setPowerModeDuringUserSwitch()) { + mInjector.setPerformancePowerMode(true); + } boolean success = startUser(targetUserId, USER_START_MODE_FOREGROUND); if (!success) { mInjector.getWindowManager().setSwitchingUser(false); @@ -2146,6 +2150,9 @@ class UserController implements Handler.Callback { } private void endUserSwitch() { + if (android.multiuser.Flags.setPowerModeDuringUserSwitch()) { + mInjector.setPerformancePowerMode(false); + } final int nextUserId; synchronized (mLock) { nextUserId = ObjectUtils.getOrElse(mPendingTargetUserIds.poll(), UserHandle.USER_NULL); @@ -3535,6 +3542,7 @@ class UserController implements Handler.Callback { private final ActivityManagerService mService; private UserManagerService mUserManager; private UserManagerInternal mUserManagerInternal; + private PowerManagerInternal mPowerManagerInternal; private Handler mHandler; private final Object mUserSwitchingDialogLock = new Object(); @GuardedBy("mUserSwitchingDialogLock") @@ -3636,6 +3644,13 @@ class UserController implements Handler.Callback { return mUserManagerInternal; } + PowerManagerInternal getPowerManagerInternal() { + if (mPowerManagerInternal == null) { + mPowerManagerInternal = LocalServices.getService(PowerManagerInternal.class); + } + return mPowerManagerInternal; + } + KeyguardManager getKeyguardManager() { return mService.mContext.getSystemService(KeyguardManager.class); } @@ -3829,6 +3844,12 @@ class UserController implements Handler.Callback { getSystemServiceManager().onUserStarting(TimingsTraceAndSlog.newAsyncLog(), userId); } + void setPerformancePowerMode(boolean enabled) { + Slogf.i(TAG, "Setting power mode MODE_FIXED_PERFORMANCE to " + enabled); + getPowerManagerInternal().setPowerMode( + PowerManagerInternal.MODE_FIXED_PERFORMANCE, enabled); + } + void onSystemUserVisibilityChanged(boolean visible) { getUserManagerInternal().onSystemUserVisibilityChanged(visible); } |