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

Commit 9d876e5d authored by Kweku Adams's avatar Kweku Adams Committed by Android (Google) Code Review
Browse files

Merge "Fix bug and migrate test." into sc-dev

parents 898e9466 0d46c77e
Loading
Loading
Loading
Loading
+29 −16
Original line number Diff line number Diff line
@@ -791,15 +791,10 @@ class JobConcurrencyManager {
            mNumUnspecialized = mConfigMaxTotal;
            mNumUnspecialized -= mConfigNumReservedSlots.get(WORK_TYPE_TOP);
            mNumUnspecialized -= mConfigNumReservedSlots.get(WORK_TYPE_BG);
            mNumUnspecialized -= mConfigAbsoluteMaxSlots.get(WORK_TYPE_TOP);
            mNumUnspecialized -= mConfigAbsoluteMaxSlots.get(WORK_TYPE_BG);
            calculateUnspecializedRemaining();
        }

        private void calculateUnspecializedRemaining() {
            mNumUnspecializedRemaining = mNumUnspecialized;
            mNumUnspecializedRemaining = mConfigMaxTotal;
            for (int i = mNumRunningJobs.size() - 1; i >= 0; --i) {
                mNumUnspecializedRemaining -= mNumRunningJobs.valueAt(i);
                mNumUnspecializedRemaining -= Math.max(mNumRunningJobs.valueAt(i),
                        mConfigNumReservedSlots.get(mNumRunningJobs.keyAt(i)));
            }
        }

@@ -882,24 +877,42 @@ class JobConcurrencyManager {
            mNumUnspecialized = mConfigMaxTotal;
            final int numTop = mNumRunningJobs.get(WORK_TYPE_TOP)
                    + mNumPendingJobs.get(WORK_TYPE_TOP);
            final int resTop = Math.min(mConfigNumReservedSlots.get(WORK_TYPE_TOP), numTop);
            int resTop = Math.min(mConfigNumReservedSlots.get(WORK_TYPE_TOP), numTop);
            mNumActuallyReservedSlots.put(WORK_TYPE_TOP, resTop);
            mNumUnspecialized -= resTop;
            final int numBg = mNumRunningJobs.get(WORK_TYPE_BG) + mNumPendingJobs.get(WORK_TYPE_BG);
            final int resBg = Math.min(mConfigNumReservedSlots.get(WORK_TYPE_BG), numBg);
            int resBg = Math.min(mConfigNumReservedSlots.get(WORK_TYPE_BG), numBg);
            mNumActuallyReservedSlots.put(WORK_TYPE_BG, resBg);
            mNumUnspecialized -= resBg;
            calculateUnspecializedRemaining();

            mNumUnspecializedRemaining = mNumUnspecialized;
            // Account for already running jobs after we've assigned the minimum number of slots.
            int unspecializedAssigned;
            int extraRunning = (mNumRunningJobs.get(WORK_TYPE_TOP) - resTop);
            if (extraRunning > 0) {
                unspecializedAssigned = Math.max(0,
                        Math.min(mConfigAbsoluteMaxSlots.get(WORK_TYPE_TOP) - resTop,
                                extraRunning));
                resTop += unspecializedAssigned;
                mNumUnspecializedRemaining -= extraRunning;
            }
            extraRunning = (mNumRunningJobs.get(WORK_TYPE_BG) - resBg);
            if (extraRunning > 0) {
                unspecializedAssigned = Math.max(0,
                        Math.min(mConfigAbsoluteMaxSlots.get(WORK_TYPE_BG) - resBg, extraRunning));
                resBg += unspecializedAssigned;
                mNumUnspecializedRemaining -= extraRunning;
            }

            // Assign remaining unspecialized based on ranking.
            int unspecializedAssigned = Math.max(0,
                    Math.min(mConfigAbsoluteMaxSlots.get(WORK_TYPE_TOP),
                            Math.min(mNumUnspecializedRemaining, numTop - resTop)));
            unspecializedAssigned = Math.max(0,
                    Math.min(mNumUnspecializedRemaining,
                            Math.min(mConfigAbsoluteMaxSlots.get(WORK_TYPE_TOP), numTop) - resTop));
            mNumActuallyReservedSlots.put(WORK_TYPE_TOP, resTop + unspecializedAssigned);
            mNumUnspecializedRemaining -= unspecializedAssigned;
            unspecializedAssigned = Math.max(0,
                    Math.min(mConfigAbsoluteMaxSlots.get(WORK_TYPE_BG),
                            Math.min(mNumUnspecializedRemaining, numBg - resBg)));
                    Math.min(mNumUnspecializedRemaining,
                            Math.min(mConfigAbsoluteMaxSlots.get(WORK_TYPE_BG), numBg) - resBg));
            mNumActuallyReservedSlots.put(WORK_TYPE_BG, resBg + unspecializedAssigned);
            mNumUnspecializedRemaining -= unspecializedAssigned;
        }
+196 −99

File changed.

Preview size limit exceeded, changes collapsed.