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

Commit 406e73da 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: 63bd5aa1 am: 471acb71 am: 527a9e27

Change-Id: I1d664687c69c6c9571937d48457e9a80def84e78
parents e2009802 527a9e27
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