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

Commit 11c5b0af authored by Fyodor Kupolov's avatar Fyodor Kupolov Committed by Android (Google) Code Review
Browse files

Merge "Reduce excessive locking in UserManager"

parents f286822a e80085d6
Loading
Loading
Loading
Loading
+30 −22
Original line number Diff line number Diff line
@@ -1956,8 +1956,7 @@ public class PackageManagerService extends IPackageManager.Stub {
            mUserAppDataDir = new File(dataDir, "user");
            mDrmAppPrivateInstallDir = new File(dataDir, "app-private");
            sUserManager = new UserManagerService(context, this,
                    mInstallLock, mPackages);
            sUserManager = new UserManagerService(context, this, mPackages);
            // Propagate permission configuration in to package manager.
            ArrayMap<String, SystemConfig.PermissionEntry> permConfig
@@ -16353,14 +16352,15 @@ public class PackageManagerService extends IPackageManager.Stub {
    }
    /** Called by UserManagerService */
    void cleanUpUserLILPw(UserManagerService userManager, int userHandle) {
    void cleanUpUser(UserManagerService userManager, int userHandle) {
        synchronized (mPackages) {
            mDirtyUsers.remove(userHandle);
            mUserNeedsBadging.delete(userHandle);
            mSettings.removeUserLPw(userHandle);
            mPendingBroadcasts.remove(userHandle);
        }
        synchronized (mInstallLock) {
            if (mInstaller != null) {
            // Technically, we shouldn't be doing this with the package lock
            // held.  However, this is very rare, and there is already so much
            // other disk I/O going on, that we'll let it slide for now.
                final StorageManager storage = mContext.getSystemService(StorageManager.class);
                for (VolumeInfo vol : storage.getWritablePrivateVolumes()) {
                    final String volumeUuid = vol.getFsUuid();
@@ -16368,9 +16368,11 @@ public class PackageManagerService extends IPackageManager.Stub {
                    mInstaller.removeUserDataDirs(volumeUuid, userHandle);
                }
            }
        mUserNeedsBadging.delete(userHandle);
            synchronized (mPackages) {
                removeUnusedPackagesLILPw(userManager, userHandle);
            }
        }
    }
    /**
     * We're removing userHandle and would like to remove any downloaded packages
@@ -16419,14 +16421,20 @@ public class PackageManagerService extends IPackageManager.Stub {
    }
    /** Called by UserManagerService */
    void createNewUserLILPw(int userHandle) {
    void createNewUser(int userHandle) {
        if (mInstaller != null) {
            synchronized (mInstallLock) {
                synchronized (mPackages) {
                    mInstaller.createUserConfig(userHandle);
                    mSettings.createNewUserLILPw(this, mInstaller, userHandle);
                }
            }
            synchronized (mPackages) {
                applyFactoryDefaultBrowserLPw(userHandle);
                primeDomainVerificationsLPw(userHandle);
            }
        }
    }
    void newUserCreated(final int userHandle) {
        mDefaultPermissionPolicy.grantDefaultPermissions(userHandle);
+194 −219

File changed.

Preview size limit exceeded, changes collapsed.