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

Commit b4ade2ad authored by Peiyong Lin's avatar Peiyong Lin
Browse files

Make sure all game modes are looped.

Previously when switched to use bitfield, we use bit count of 1 to check
all game modes. This patch makes sure all game modes are properly
checked.

Bug: b/188729014
Test: atest GameManagerServiceTests
Change-Id: Ia7a9cb925ba9b26f7ff7136ec60758e28a467573
parent 5eef4114
Loading
Loading
Loading
Loading
+5 −5
Original line number Original line Diff line number Diff line
@@ -387,12 +387,12 @@ public final class GameManagerService extends IGameManagerService.Stub {
         * Get an array of a package's available game modes.
         * Get an array of a package's available game modes.
         */
         */
        public @GameMode int[] getAvailableGameModes() {
        public @GameMode int[] getAvailableGameModes() {

            final int modesBitfield = getAvailableGameModesBitfield();
            int modesBitfield = getAvailableGameModesBitfield();
            int[] modes = new int[Integer.bitCount(modesBitfield)];
            int sigBits = Integer.bitCount(modesBitfield);
            int[] modes = new int[sigBits];
            int i = 0;
            int i = 0;
            for (int mode = 0; mode < sigBits; ++mode) {
            final int gameModeInHighestBit =
                    Integer.numberOfTrailingZeros(Integer.highestOneBit(modesBitfield));
            for (int mode = 0; mode <= gameModeInHighestBit; ++mode) {
                if (((modesBitfield >> mode) & 1) != 0) {
                if (((modesBitfield >> mode) & 1) != 0) {
                    modes[i++] = mode;
                    modes[i++] = mode;
                }
                }
+1 −1
Original line number Original line Diff line number Diff line
@@ -412,7 +412,7 @@ public class GameManagerServiceTests {
            reportedModes.add(mode);
            reportedModes.add(mode);
        }
        }
        assertEquals(requiredModes.length, reportedModes.size());
        assertEquals(requiredModes.length, reportedModes.size());
        for (int requiredMode : reportedModes) {
        for (int requiredMode : requiredModes) {
            assertTrue("Required game mode not supported: " + requiredMode,
            assertTrue("Required game mode not supported: " + requiredMode,
                    reportedModes.contains(requiredMode));
                    reportedModes.contains(requiredMode));
        }
        }