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

Commit f12b45f3 authored by Tiger's avatar Tiger
Browse files

Refine getIndex and getType of InsetsSource

The methods used "%" to clear higher bits, but it wouldn't work if the
integer is negative. This CLs uses "&" to clear bits that we don't want.

Fix: 281709596
Test: atest InsetsSourceTest
Change-Id: I845926f8b7d784d82b3f020736b478adf9482910
parent 706cc584
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -293,16 +293,23 @@ public class InsetsSource implements Parcelable {
     * @see #createId(Object, int, int)
     */
    public static int getIndex(int id) {
        return (id % (1 << 16)) >> 5;
        //   start: ????????????????***********?????
        // & 65535: 0000000000000000***********?????
        //    >> 5: 000000000000000000000***********
        return (id & 65535) >> 5;
    }

    /**
     * Gets the {@link InsetsType} from the ID.
     *
     * @see #createId(Object, int, int)
     * @see WindowInsets.Type#indexOf(int)
     */
    public static int getType(int id) {
        return 1 << (id % 32);
        // start: ???????????????????????????*****
        //  & 31: 000000000000000000000000000*****
        //  1 <<: See WindowInsets.Type#indexOf
        return 1 << (id & 31);
    }

    public static String flagsToString(@Flags int flags) {