Merge "Refactor getNewGameMode()" into tm-dev am: 6cc80fa086
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16980327 Change-Id: Ia30fa04bf3c45fa8ad838d5c529811eef5922e86
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
synchronized (mDeviceConfigLock) {
|
if (config == null) {
|
||||||
config = mConfigs.get(packageName);
|
synchronized (mDeviceConfigLock) {
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user