Merge "Refactor getNewGameMode()" into tm-dev

This commit is contained in:
TreeHugger Robot
2022-03-02 06:56:09 +00:00
committed by Android (Google) Code Review

View File

@@ -1320,15 +1320,26 @@ public final class GameManagerService extends IGameManagerService.Stub {
// Make sure after resetting the game mode is still supported. // Make sure after resetting the game mode is still supported.
// If not, set the game mode to standard // If not, set the game mode to standard
int gameMode = getGameMode(packageName, userId); int gameMode = getGameMode(packageName, userId);
int newGameMode = gameMode;
GamePackageConfiguration config = null; GamePackageConfiguration config = null;
synchronized (mOverrideConfigLock) { synchronized (mOverrideConfigLock) {
config = mOverrideConfigs.get(packageName); config = mOverrideConfigs.get(packageName);
} }
if (config == null) {
synchronized (mDeviceConfigLock) { synchronized (mDeviceConfigLock) {
config = mConfigs.get(packageName); config = mConfigs.get(packageName);
} }
}
final int newGameMode = getNewGameMode(gameMode, config);
if (gameMode != newGameMode) {
setGameMode(packageName, GameManager.GAME_MODE_STANDARD, userId);
return;
}
setGameMode(packageName, gameMode, userId);
}
private int getNewGameMode(int gameMode, GamePackageConfiguration config) {
int newGameMode = gameMode;
if (config != null) { if (config != null) {
int modesBitfield = config.getAvailableGameModesBitfield(); int modesBitfield = config.getAvailableGameModesBitfield();
// Remove UNSUPPORTED to simplify the logic here, since we really just // Remove UNSUPPORTED to simplify the logic here, since we really just
@@ -1350,11 +1361,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
// UNSUPPORTED, then set to UNSUPPORTED // UNSUPPORTED, then set to UNSUPPORTED
newGameMode = GameManager.GAME_MODE_UNSUPPORTED; newGameMode = GameManager.GAME_MODE_UNSUPPORTED;
} }
if (gameMode != newGameMode) { return newGameMode;
setGameMode(packageName, GameManager.GAME_MODE_STANDARD, userId);
return;
}
setGameMode(packageName, gameMode, userId);
} }
/** /**
@@ -1412,7 +1419,6 @@ public final class GameManagerService extends IGameManagerService.Stub {
} }
for (final String packageName : packageNames) { for (final String packageName : packageNames) {
int gameMode = getGameMode(packageName, userId); int gameMode = getGameMode(packageName, userId);
int newGameMode = gameMode;
// Make sure the user settings and package configs don't conflict. // Make sure the user settings and package configs don't conflict.
// I.e. the user setting is set to a mode that no longer available due to // I.e. the user setting is set to a mode that no longer available due to
// config/manifest changes. // config/manifest changes.
@@ -1421,27 +1427,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
synchronized (mDeviceConfigLock) { synchronized (mDeviceConfigLock) {
config = mConfigs.get(packageName); config = mConfigs.get(packageName);
} }
if (config != null) { final int newGameMode = getNewGameMode(gameMode, config);
int modesBitfield = config.getAvailableGameModesBitfield();
// Remove UNSUPPORTED to simplify the logic here, since we really just
// want to check if we support selectable game modes
modesBitfield &= ~modeToBitmask(GameManager.GAME_MODE_UNSUPPORTED);
if (!bitFieldContainsModeBitmask(modesBitfield, gameMode)) {
if (bitFieldContainsModeBitmask(modesBitfield,
GameManager.GAME_MODE_STANDARD)) {
// If the current set mode isn't supported,
// but we support STANDARD, then set the mode to STANDARD.
newGameMode = GameManager.GAME_MODE_STANDARD;
} else {
// If we don't support any game modes, then set to UNSUPPORTED
newGameMode = GameManager.GAME_MODE_UNSUPPORTED;
}
}
} else if (gameMode != GameManager.GAME_MODE_UNSUPPORTED) {
// If we have no config for the package, but the configured mode is not
// UNSUPPORTED, then set to UNSUPPORTED
newGameMode = GameManager.GAME_MODE_UNSUPPORTED;
}
if (newGameMode != gameMode) { if (newGameMode != gameMode) {
setGameMode(packageName, newGameMode, userId); setGameMode(packageName, newGameMode, userId);
} }