Merge "Fix issue #10795385: System process crash reinstalling GEL -" into klp-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
463850e0c6
@@ -14749,7 +14749,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
}
|
||||
|
||||
private final void setProcessTrackerState(ProcessRecord proc, int memFactor, long now) {
|
||||
if (proc.thread != null) {
|
||||
if (proc.thread != null && proc.baseProcessTracker != null) {
|
||||
proc.baseProcessTracker.setState(proc.repProcState, memFactor, now, proc.pkgList);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -567,7 +567,8 @@ final class ProcessRecord {
|
||||
*/
|
||||
public boolean addPackage(String pkg, ProcessStatsService tracker) {
|
||||
if (!pkgList.containsKey(pkg)) {
|
||||
pkgList.put(pkg, tracker.getProcessStateLocked(pkg, info.uid, processName));
|
||||
pkgList.put(pkg, baseProcessTracker != null
|
||||
? tracker.getProcessStateLocked(pkg, info.uid, processName) : null);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -592,25 +593,30 @@ final class ProcessRecord {
|
||||
* Delete all packages from list except the package indicated in info
|
||||
*/
|
||||
public void resetPackageList(ProcessStatsService tracker) {
|
||||
long now = SystemClock.uptimeMillis();
|
||||
baseProcessTracker.setState(ProcessStats.STATE_NOTHING,
|
||||
tracker.getMemFactorLocked(), now, pkgList);
|
||||
final int N = pkgList.size();
|
||||
if (N != 1) {
|
||||
for (int i=0; i<N; i++) {
|
||||
ProcessStats.ProcessState ps = pkgList.valueAt(i);
|
||||
if (ps != null && ps != baseProcessTracker) {
|
||||
ps.makeInactive();
|
||||
}
|
||||
if (baseProcessTracker != null) {
|
||||
long now = SystemClock.uptimeMillis();
|
||||
baseProcessTracker.setState(ProcessStats.STATE_NOTHING,
|
||||
tracker.getMemFactorLocked(), now, pkgList);
|
||||
if (N != 1) {
|
||||
for (int i=0; i<N; i++) {
|
||||
ProcessStats.ProcessState ps = pkgList.valueAt(i);
|
||||
if (ps != null && ps != baseProcessTracker) {
|
||||
ps.makeInactive();
|
||||
}
|
||||
|
||||
}
|
||||
pkgList.clear();
|
||||
ProcessStats.ProcessState ps = tracker.getProcessStateLocked(
|
||||
info.packageName, info.uid, processName);
|
||||
pkgList.put(info.packageName, ps);
|
||||
if (thread != null && ps != baseProcessTracker) {
|
||||
ps.makeActive();
|
||||
}
|
||||
}
|
||||
} else if (N != 1) {
|
||||
pkgList.clear();
|
||||
ProcessStats.ProcessState ps = tracker.getProcessStateLocked(
|
||||
info.packageName, info.uid, processName);
|
||||
pkgList.put(info.packageName, ps);
|
||||
if (thread != null && ps != baseProcessTracker) {
|
||||
ps.makeActive();
|
||||
}
|
||||
pkgList.put(info.packageName, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user