Loading boost: use the existing GAME_LOADING power mode, and deactivate it on a timer.

Test: Manual
Bug: 207845905
Change-Id: Iee3a43704e39b24c61dec6d7a655caa5493386fe
This commit is contained in:
jimblackler
2022-04-13 22:15:30 +00:00
committed by Jim Blackler
parent 21469e70d6
commit c40c497fba

View File

@@ -121,7 +121,10 @@ public final class GameManagerService extends IGameManagerService.Stub {
static final int REMOVE_SETTINGS = 2;
static final int POPULATE_GAME_MODE_SETTINGS = 3;
static final int SET_GAME_STATE = 4;
static final int CANCEL_GAME_LOADING_MODE = 5;
static final int WRITE_SETTINGS_DELAY = 10 * 1000; // 10 seconds
static final int LOADING_BOOST_MAX_DURATION = 5 * 1000; // 5 seconds
static final PackageOverride COMPAT_ENABLED = new PackageOverride.Builder().setEnabled(true)
.build();
static final PackageOverride COMPAT_DISABLED = new PackageOverride.Builder().setEnabled(false)
@@ -299,6 +302,10 @@ public final class GameManagerService extends IGameManagerService.Stub {
}
break;
}
case CANCEL_GAME_LOADING_MODE: {
mPowerManagerInternal.setPowerMode(Mode.GAME_LOADING, false);
break;
}
}
}
}
@@ -1028,9 +1035,22 @@ public final class GameManagerService extends IGameManagerService.Stub {
if (gameMode == GameManager.GAME_MODE_UNSUPPORTED) {
return;
}
final int loadingBoostDuration = getLoadingBoostDuration(packageName, userId);
int loadingBoostDuration = getLoadingBoostDuration(packageName, userId);
if (loadingBoostDuration != -1) {
mPowerManagerInternal.setPowerBoost(Mode.GAME_LOADING, loadingBoostDuration);
if (loadingBoostDuration == 0 || loadingBoostDuration > LOADING_BOOST_MAX_DURATION) {
loadingBoostDuration = LOADING_BOOST_MAX_DURATION;
}
if (mHandler.hasMessages(CANCEL_GAME_LOADING_MODE)) {
// The loading mode has already been set and is waiting to be unset. It is not
// required to set the mode again and we should replace the queued cancel
// instruction.
mHandler.removeMessages(CANCEL_GAME_LOADING_MODE);
} else {
mPowerManagerInternal.setPowerMode(Mode.GAME_LOADING, true);
}
mHandler.sendMessageDelayed(
mHandler.obtainMessage(CANCEL_GAME_LOADING_MODE), loadingBoostDuration);
}
}