Apply interventions directly if the current game mode is CUSTOM
Bug: b/261090034 Test: atest GameManagerServiceTests Change-Id: I12097eeaabcc7d5c80698cb781538670c38ae8b3
This commit is contained in:
@@ -1388,10 +1388,26 @@ public final class GameManagerService extends IGameManagerService.Stub {
|
||||
configOverride = new GamePackageConfiguration(packageName);
|
||||
settings.setConfigOverride(packageName, configOverride);
|
||||
}
|
||||
|
||||
}
|
||||
GamePackageConfiguration.GameModeConfiguration internalConfig =
|
||||
configOverride.getOrAddDefaultGameModeConfiguration(GameManager.GAME_MODE_CUSTOM);
|
||||
final float scalingValueFrom = internalConfig.getScaling();
|
||||
final int fpsValueFrom = internalConfig.getFps();
|
||||
internalConfig.updateFromPublicGameModeConfig(gameModeConfig);
|
||||
|
||||
sendUserMessage(userId, WRITE_SETTINGS, EVENT_UPDATE_CUSTOM_GAME_MODE_CONFIG,
|
||||
WRITE_DELAY_MILLIS);
|
||||
sendUserMessage(userId, WRITE_GAME_MODE_INTERVENTION_LIST_FILE,
|
||||
EVENT_UPDATE_CUSTOM_GAME_MODE_CONFIG, WRITE_DELAY_MILLIS /*delayMillis*/);
|
||||
|
||||
final int gameMode = getGameMode(packageName, userId);
|
||||
if (gameMode == GameManager.GAME_MODE_CUSTOM) {
|
||||
updateInterventions(packageName, gameMode, userId);
|
||||
}
|
||||
Slog.i(TAG, "Updated custom game mode config for package: " + packageName
|
||||
+ " with FPS=" + internalConfig.getFps() + ";Scaling="
|
||||
+ internalConfig.getScaling() + " under user " + userId);
|
||||
|
||||
int gameUid = -1;
|
||||
try {
|
||||
gameUid = mPackageManager.getPackageUidAsUser(packageName, userId);
|
||||
@@ -1400,18 +1416,8 @@ public final class GameManagerService extends IGameManagerService.Stub {
|
||||
}
|
||||
FrameworkStatsLog.write(FrameworkStatsLog.GAME_MODE_CONFIGURATION_CHANGED, gameUid,
|
||||
Binder.getCallingUid(), gameModeToStatsdGameMode(GameManager.GAME_MODE_CUSTOM),
|
||||
internalConfig.getScaling(), gameModeConfig.getScalingFactor(),
|
||||
internalConfig.getFps(), gameModeConfig.getFpsOverride());
|
||||
internalConfig.updateFromPublicGameModeConfig(gameModeConfig);
|
||||
|
||||
Slog.i(TAG, "Updated custom game mode config for package: " + packageName
|
||||
+ " with FPS=" + internalConfig.getFps() + ";Scaling="
|
||||
+ internalConfig.getScaling() + " under user " + userId);
|
||||
|
||||
sendUserMessage(userId, WRITE_SETTINGS, EVENT_UPDATE_CUSTOM_GAME_MODE_CONFIG,
|
||||
WRITE_DELAY_MILLIS);
|
||||
sendUserMessage(userId, WRITE_GAME_MODE_INTERVENTION_LIST_FILE,
|
||||
EVENT_UPDATE_CUSTOM_GAME_MODE_CONFIG, WRITE_DELAY_MILLIS /*delayMillis*/);
|
||||
scalingValueFrom, gameModeConfig.getScalingFactor(),
|
||||
fpsValueFrom, gameModeConfig.getFpsOverride());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1874,16 +1874,20 @@ public class GameManagerServiceTests {
|
||||
@Test
|
||||
public void testUpdateCustomGameModeConfiguration() throws InterruptedException {
|
||||
mockModifyGameModeGranted();
|
||||
GameManagerService gameManagerService = createServiceAndStartUser(USER_ID_1);
|
||||
GameManagerService gameManagerService = Mockito.spy(createServiceAndStartUser(USER_ID_1));
|
||||
gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_CUSTOM, USER_ID_1);
|
||||
gameManagerService.updateCustomGameModeConfiguration(mPackageName,
|
||||
new GameModeConfiguration.Builder().setScalingFactor(0.35f).setFpsOverride(
|
||||
60).build(),
|
||||
USER_ID_1);
|
||||
|
||||
assertTrue(gameManagerService.mHandler.hasEqualMessages(WRITE_SETTINGS, USER_ID_1));
|
||||
assertTrue(
|
||||
gameManagerService.mHandler.hasEqualMessages(WRITE_GAME_MODE_INTERVENTION_LIST_FILE,
|
||||
USER_ID_1));
|
||||
Mockito.verify(gameManagerService).setOverrideFrameRate(
|
||||
ArgumentMatchers.eq(DEFAULT_PACKAGE_UID),
|
||||
ArgumentMatchers.eq(60.0f));
|
||||
checkFps(gameManagerService, GameManager.GAME_MODE_CUSTOM, 60);
|
||||
|
||||
GameManagerService.GamePackageConfiguration pkgConfig = gameManagerService.getConfig(
|
||||
mPackageName, USER_ID_1);
|
||||
|
||||
Reference in New Issue
Block a user