Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e69b0afd authored by Andy Yu's avatar Andy Yu
Browse files

Set Game Default Frame Rate to 60 when sysprop not set

In previous patch, when the sysprop controlling the game
default frame rate,
"ro.surface_flinger.game_default_frame_rate_override",
is not set, it will not have any effect.

This patch sets the frame rate to 60 if
"ro.surface_flinger.game_default_frame_rate_override"
is not otherwise set to a different value.

Bug: 286084594
Test: atest GameManagerServiceTests
      atest CtsGraphicsTestCases --test-filter "SetFrameRateTest*"
      atest CtsFrameRateOverrideTestCases
Change-Id: Ia14cfa831b1418d6d2e22a77235f2ae07394a9f5
parent ef586bd6
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -152,7 +152,6 @@ public final class GameManagerService extends IGameManagerService.Stub {
    private static final String GAME_MODE_INTERVENTION_LIST_FILE_NAME =
            "game_mode_intervention.list";


    private final Context mContext;
    private final Object mLock = new Object();
    private final Object mDeviceConfigLock = new Object();
@@ -184,6 +183,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
    @GuardedBy("mUidObserverLock")
    private final Set<Integer> mForegroundGameUids = new HashSet<>();
    private final GameManagerServiceSystemPropertiesWrapper mSysProps;
    private float mGameDefaultFrameRateValue;

    @VisibleForTesting
    static class Injector {
@@ -1559,6 +1559,10 @@ public final class GameManagerService extends IGameManagerService.Stub {
        mPowerManagerInternal.setPowerMode(Mode.GAME_LOADING, false);
        Slog.v(TAG, "Game power mode OFF (game manager service start/restart)");
        mPowerManagerInternal.setPowerMode(Mode.GAME, false);

        mGameDefaultFrameRateValue = (float) mSysProps.getInt(
                PROPERTY_RO_SURFACEFLINGER_GAME_DEFAULT_FRAME_RATE, 60);
        Slog.v(TAG, "Game Default Frame Rate : " + mGameDefaultFrameRateValue);
    }

    private void sendUserMessage(int userId, int what, String eventForLog, int delayMillis) {
@@ -2217,8 +2221,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
        }
        if (gameDefaultFrameRate()) {
            gameDefaultFrameRate = isGameDefaultFrameRateEnabled
                    ? (float) mSysProps.getInt(
                            PROPERTY_RO_SURFACEFLINGER_GAME_DEFAULT_FRAME_RATE, 0) : 0.0f;
                    ? mGameDefaultFrameRateValue : 0.0f;
        }
        return gameDefaultFrameRate;
    }
+8 −6
Original line number Diff line number Diff line
@@ -2423,6 +2423,14 @@ 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.onBootCompleted();

        // Set up a game in the foreground.
        String[] packages = {mPackageName};
        when(mMockPackageManager.getPackagesForUid(DEFAULT_PACKAGE_UID)).thenReturn(packages);
@@ -2430,12 +2438,6 @@ public class GameManagerServiceTests {
                DEFAULT_PACKAGE_UID, ActivityManager.PROCESS_STATE_TOP, 0, 0);

        // Toggle game default frame rate on.
        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: