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

Commit 5da5d60a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "updateAppUidRecLocked() needs to run for all ProcessRecord of a...

Merge "updateAppUidRecLocked() needs to run for all ProcessRecord of a UidRecord." into rvc-dev am: 00b717d6 am: 7cf7c260

Change-Id: I4ab07a3c658b6c63419b64cece2bac95345b21b4
parents b8badc95 7cf7c260
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -4914,8 +4914,13 @@ public final class ActiveServices {

    // TODO: remove this toast after feature development is done
    void showWhileInUseDebugToastLocked(int uid, int op, int mode) {
        for (int i = mAm.mProcessList.mLruProcesses.size() - 1; i >= 0; i--) {
            ProcessRecord pr = mAm.mProcessList.mLruProcesses.get(i);
        final UidRecord uidRec = mAm.mProcessList.getUidRecordLocked(uid);
        if (uidRec == null) {
            return;
        }

        for (int i = uidRec.procRecords.size() - 1; i >= 0; i--) {
            ProcessRecord pr = uidRec.procRecords.valueAt(i);
            if (pr.uid != uid) {
                continue;
            }
+15 −2
Original line number Diff line number Diff line
@@ -324,8 +324,21 @@ public final class OomAdjuster {
        boolean success = applyOomAdjLocked(app, doingAll, now, SystemClock.elapsedRealtime());

        if (uidRec != null) {
            updateAppUidRecLocked(app);
            // If this proc state is changed, need to update its uid record here
            // After uidRec.reset() above, for UidRecord that has multiple processes (ProcessRecord)
            // , We need to apply all ProcessRecord into UidRecord.
            final ArraySet<ProcessRecord> procRecords = app.uidRecord.procRecords;
            for (int i = procRecords.size() - 1; i >= 0; i--) {
                final ProcessRecord pr = procRecords.valueAt(i);
                if (!pr.killedByAm && pr.thread != null) {
                    if (pr.isolated && pr.numberOfRunningServices() <= 0
                            && pr.isolatedEntryPoint == null) {
                        // No op.
                    } else {
                        // Keeping this process, update its uid.
                        updateAppUidRecLocked(pr);
                    }
                }
            }
            if (uidRec.getCurProcState() != PROCESS_STATE_NONEXISTENT
                    && (uidRec.setProcState != uidRec.getCurProcState()
                    || uidRec.setCapability != uidRec.curCapability
+2 −0
Original line number Diff line number Diff line
@@ -2840,6 +2840,7 @@ public final class ProcessList {
                    uidRec.curCapability);
        }
        proc.uidRecord = uidRec;
        uidRec.procRecords.add(proc);

        // Reset render thread tid if it was already set, so new process can set it again.
        proc.renderThreadTid = 0;
@@ -2933,6 +2934,7 @@ public final class ProcessList {
        }
        if (old != null && old.uidRecord != null) {
            old.uidRecord.numProcs--;
            old.uidRecord.procRecords.remove(old);
            if (old.uidRecord.numProcs == 0) {
                // No more processes using this uid, tell clients it is gone.
                if (DEBUG_UID_OBSERVERS) Slog.i(TAG_UID_OBSERVERS,
+2 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.app.ActivityManager;
import android.content.pm.PackageManager;
import android.os.SystemClock;
import android.os.UserHandle;
import android.util.ArraySet;
import android.util.TimeUtils;
import android.util.proto.ProtoOutputStream;
import android.util.proto.ProtoUtils;
@@ -44,6 +45,7 @@ public final class UidRecord {
    boolean idle;
    boolean setIdle;
    int numProcs;
    ArraySet<ProcessRecord> procRecords = new ArraySet<>();

    /**
     * Sequence number associated with the {@link #mCurProcState}. This is incremented using