summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andy Yu <chingtangyu@google.com> 2023-12-14 20:15:33 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-12-14 20:15:33 +0000
commit4f76add47325cd6f67199f1d1caea65fc134b2b9 (patch)
treefff0543f964ac664698051efb6e567b5023a8147
parent356a1b24e34060706277f66c14ff118b1ceceddd (diff)
parentf4d3f1233e3f34aeacbc8ec5933521dca7209d5d (diff)
Merge "Add debug system property to guard Game Default Frame Rate" into main
-rw-r--r--services/core/java/com/android/server/app/GameManagerService.java28
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java39
2 files changed, 19 insertions, 48 deletions
diff --git a/services/core/java/com/android/server/app/GameManagerService.java b/services/core/java/com/android/server/app/GameManagerService.java
index 32d5cf587e0c..b3fb9c947ca4 100644
--- a/services/core/java/com/android/server/app/GameManagerService.java
+++ b/services/core/java/com/android/server/app/GameManagerService.java
@@ -142,8 +142,8 @@ public final class GameManagerService extends IGameManagerService.Stub {
static final int WRITE_GAME_MODE_INTERVENTION_LIST_FILE = 6;
static final int WRITE_DELAY_MILLIS = 10 * 1000; // 10 seconds
static final int LOADING_BOOST_MAX_DURATION = 5 * 1000; // 5 seconds
- static final String PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED =
- "persist.graphics.game_default_frame_rate.enabled";
+ static final String PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED =
+ "debug.graphics.game_default_frame_rate.disabled";
static final String PROPERTY_RO_SURFACEFLINGER_GAME_DEFAULT_FRAME_RATE =
"ro.surface_flinger.game_default_frame_rate_override";
@@ -2211,17 +2211,10 @@ public final class GameManagerService extends IGameManagerService.Stub {
nativeSetGameDefaultFrameRateOverride(uid, frameRate);
}
- private float getGameDefaultFrameRate() {
- final boolean isGameDefaultFrameRateEnabled;
+ private float getGameDefaultFrameRate(boolean isEnabled) {
float gameDefaultFrameRate = 0.0f;
- synchronized (mLock) {
- isGameDefaultFrameRateEnabled =
- mSysProps.getBoolean(
- PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED, true);
- }
if (gameDefaultFrameRate()) {
- gameDefaultFrameRate = isGameDefaultFrameRateEnabled
- ? mGameDefaultFrameRateValue : 0.0f;
+ gameDefaultFrameRate = isEnabled ? mGameDefaultFrameRateValue : 0.0f;
}
return gameDefaultFrameRate;
}
@@ -2237,24 +2230,23 @@ public final class GameManagerService extends IGameManagerService.Stub {
}
private void toggleGameDefaultFrameRateUnchecked(boolean isEnabled) {
- // Update system properties.
// Here we only need to immediately update games that are in the foreground.
// We will update game default frame rate when a game comes into foreground in
// MyUidObserver.
synchronized (mLock) {
if (isEnabled) {
mSysProps.set(
- PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED, "true");
+ PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED, "false");
} else {
mSysProps.set(
- PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED, "false");
+ PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED, "true");
}
}
// Update all foreground games' frame rate.
synchronized (mUidObserverLock) {
for (int uid : mForegroundGameUids) {
- setGameDefaultFrameRateOverride(uid, getGameDefaultFrameRate());
+ setGameDefaultFrameRateOverride(uid, getGameDefaultFrameRate(isEnabled));
}
}
}
@@ -2296,7 +2288,11 @@ public final class GameManagerService extends IGameManagerService.Stub {
Slog.v(TAG, "Game power mode ON (process state was changed to foreground)");
mPowerManagerInternal.setPowerMode(Mode.GAME, true);
}
- setGameDefaultFrameRateOverride(uid, getGameDefaultFrameRate());
+ final boolean isGameDefaultFrameRateDisabled =
+ mSysProps.getBoolean(
+ PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED, false);
+ setGameDefaultFrameRateOverride(uid,
+ getGameDefaultFrameRate(!isGameDefaultFrameRateDisabled));
mForegroundGameUids.add(uid);
}
}
diff --git a/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java b/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java
index 9739e4b46063..3b83e3cc0817 100644
--- a/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java
+++ b/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java
@@ -20,7 +20,7 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSess
import static com.android.server.app.GameManagerService.CANCEL_GAME_LOADING_MODE;
import static com.android.server.app.GameManagerService.Injector;
import static com.android.server.app.GameManagerService.LOADING_BOOST_MAX_DURATION;
-import static com.android.server.app.GameManagerService.PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED;
+import static com.android.server.app.GameManagerService.PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED;
import static com.android.server.app.GameManagerService.PROPERTY_RO_SURFACEFLINGER_GAME_DEFAULT_FRAME_RATE;
import static com.android.server.app.GameManagerService.SET_GAME_STATE;
import static com.android.server.app.GameManagerService.WRITE_DELAY_MILLIS;
@@ -2427,8 +2427,8 @@ public class GameManagerServiceTests {
ArgumentMatchers.eq(PROPERTY_RO_SURFACEFLINGER_GAME_DEFAULT_FRAME_RATE),
anyInt())).thenReturn(60);
when(mSysPropsMock.getBoolean(
- ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED),
- ArgumentMatchers.eq(true))).thenReturn(true);
+ ArgumentMatchers.eq(PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED),
+ ArgumentMatchers.eq(false))).thenReturn(false);
gameManagerService.onBootCompleted();
// Set up a game in the foreground.
@@ -2441,11 +2441,7 @@ public class GameManagerServiceTests {
gameManagerService.toggleGameDefaultFrameRate(true);
// Verify that:
- // 1) The system property is set correctly
- // 2) setDefaultFrameRateOverride is called with correct arguments
- Mockito.verify(mSysPropsMock).set(
- ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED),
- ArgumentMatchers.eq("true"));
+ // setDefaultFrameRateOverride is called with correct arguments
Mockito.verify(gameManagerService, times(1))
.setGameDefaultFrameRateOverride(ArgumentMatchers.eq(DEFAULT_PACKAGE_UID),
ArgumentMatchers.eq(60.0f));
@@ -2461,17 +2457,10 @@ public class GameManagerServiceTests {
somePackageId, ActivityManager.PROCESS_STATE_TOP, 0, 0);
// Toggle game default frame rate off.
- when(mSysPropsMock.getBoolean(
- ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED),
- ArgumentMatchers.eq(true))).thenReturn(false);
gameManagerService.toggleGameDefaultFrameRate(false);
// Verify that:
- // 1) The system property is set correctly
- // 2) setDefaultFrameRateOverride is called with correct arguments
- Mockito.verify(mSysPropsMock).set(
- ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED),
- ArgumentMatchers.eq("false"));
+ // setDefaultFrameRateOverride is called with correct arguments
Mockito.verify(gameManagerService).setGameDefaultFrameRateOverride(
ArgumentMatchers.eq(DEFAULT_PACKAGE_UID), ArgumentMatchers.eq(0.0f));
Mockito.verify(gameManagerService).setGameDefaultFrameRateOverride(
@@ -2504,18 +2493,11 @@ public class GameManagerServiceTests {
when(mSysPropsMock.getInt(
ArgumentMatchers.eq(PROPERTY_RO_SURFACEFLINGER_GAME_DEFAULT_FRAME_RATE),
anyInt())).thenReturn(60);
- when(mSysPropsMock.getBoolean(
- ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED),
- ArgumentMatchers.eq(true))).thenReturn(true);
gameManagerService.toggleGameDefaultFrameRate(true);
// Verify that:
- // 1) System property is never set
- // 2) setGameDefaultFrameRateOverride() should never be called if the flag is disabled.
- Mockito.verify(mSysPropsMock, never()).set(
- ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED),
- anyString());
+ // setGameDefaultFrameRateOverride() should never be called if the flag is disabled.
Mockito.verify(gameManagerService, never())
.setGameDefaultFrameRateOverride(anyInt(), anyFloat());
@@ -2529,17 +2511,10 @@ public class GameManagerServiceTests {
somePackageId, ActivityManager.PROCESS_STATE_TOP, 0, 0);
gameManagerService.mUidObserver.onUidStateChanged(
somePackageId, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 0, 0);
- when(mSysPropsMock.getBoolean(
- ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED),
- ArgumentMatchers.eq(true))).thenReturn(false);
gameManagerService.toggleGameDefaultFrameRate(false);
// Verify that:
- // 1) System property is never set
- // 2) setGameDefaultFrameRateOverride() should never be called if the flag is disabled.
- Mockito.verify(mSysPropsMock, never()).set(
- ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED),
- anyString());
+ // setGameDefaultFrameRateOverride() should never be called if the flag is disabled.
Mockito.verify(gameManagerService, never())
.setGameDefaultFrameRateOverride(anyInt(), anyFloat());
}