diff options
| author | 2023-12-14 20:15:33 +0000 | |
|---|---|---|
| committer | 2023-12-14 20:15:33 +0000 | |
| commit | 4f76add47325cd6f67199f1d1caea65fc134b2b9 (patch) | |
| tree | fff0543f964ac664698051efb6e567b5023a8147 | |
| parent | 356a1b24e34060706277f66c14ff118b1ceceddd (diff) | |
| parent | f4d3f1233e3f34aeacbc8ec5933521dca7209d5d (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.java | 28 | ||||
| -rw-r--r-- | services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java | 39 |
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()); } |