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

Commit 7cf7c260 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

Change-Id: Ia920361e841778580a4c1948634e9e049d76d890
parents ec3c58b5 00b717d6
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