Merge "Fix the PMS live computer" into sc-dev

This commit is contained in:
Lee Shombert
2021-03-01 18:17:09 +00:00
committed by Android (Google) Code Review

View File

@@ -4634,7 +4634,7 @@ public class PackageManagerService extends IPackageManager.Stub
* computer engine. This is required because there are no locks taken in
* the engine itself.
*/
private static class ComputerLocked extends ComputerEngine {
private static class ComputerLocked extends ComputerEngineLive {
private final Object mLock;
ComputerLocked(Snapshot args) {
@@ -4642,16 +4642,6 @@ public class PackageManagerService extends IPackageManager.Stub
mLock = mService.mLock;
}
protected ComponentName resolveComponentName() {
return mService.mResolveComponentName;
}
protected ActivityInfo instantAppInstallerActivity() {
return mService.mInstantAppInstallerActivity;
}
protected ApplicationInfo androidApplication() {
return mService.mAndroidApplication;
}
public @NonNull List<ResolveInfo> queryIntentServicesInternalBody(Intent intent,
String resolvedType, int flags, int userId, int callingUid,
String instantAppPkgName) {
@@ -4781,8 +4771,9 @@ public class PackageManagerService extends IPackageManager.Stub
}
// Compute read-only functions, based on live data.
private final Computer mLiveComputer;
// Compute read-only functions, based on live data. This attribute may be modified multiple
// times during the PackageManagerService constructor but it should not be modified thereafter.
private Computer mLiveComputer;
// A lock-free cache for frequently called functions.
private volatile Computer mSnapshotComputer;
// If true, the snapshot is invalid (stale). The attribute is static since it may be
@@ -6401,8 +6392,9 @@ public class PackageManagerService extends IPackageManager.Stub
// constructor.
mSnapshotEnabled = SNAPSHOT_ENABLED;
sSnapshotCorked = true;
sSnapshotInvalid = true;
mLiveComputer = createLiveComputer();
mSnapshotComputer = mLiveComputer;
mSnapshotComputer = null;
registerObserver();
// CHECKSTYLE:OFF IndentationCheck
@@ -7081,6 +7073,10 @@ public class PackageManagerService extends IPackageManager.Stub
BOOT_TIME_EVENT_DURATION__EVENT__OTA_PACKAGE_MANAGER_INIT_TIME,
SystemClock.uptimeMillis() - startTime);
}
// Rebild the live computer since some attributes have been rebuilt.
mLiveComputer = createLiveComputer();
} // synchronized (mLock)
} // synchronized (mInstallLock)
// CHECKSTYLE:ON IndentationCheck