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

Commit f87e2344 authored by Makoto Onuki's avatar Makoto Onuki Committed by Android (Google) Code Review
Browse files

Merge "Fix deadlock between activity manager and settings provider"

parents 42b0676d 73360ab2
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -248,6 +248,9 @@ public class SettingsProvider extends ContentProvider {
    @GuardedBy("mLock")
    private HandlerThread mHandlerThread;

    @GuardedBy("mLock")
    private Handler mHandler;

    // We have to call in the user manager with no lock held,
    private volatile UserManager mUserManager;

@@ -300,10 +303,13 @@ public class SettingsProvider extends ContentProvider {
            mHandlerThread = new HandlerThread(LOG_TAG,
                    Process.THREAD_PRIORITY_BACKGROUND);
            mHandlerThread.start();
            mHandler = new Handler(mHandlerThread.getLooper());
            mSettingsRegistry = new SettingsRegistry();
        }
        mHandler.post(() -> {
            registerBroadcastReceivers();
            startWatchingUserRestrictionChanges();
        });
        ServiceManager.addService("settings", new SettingsService(this));
        return true;
    }
+3 −3
Original line number Diff line number Diff line
@@ -105,16 +105,16 @@ final class ActivityManagerConstants extends ContentObserver {
    }

    private void updateConstants() {
        final String setting = Settings.Global.getString(mResolver,
                Settings.Global.ACTIVITY_MANAGER_CONSTANTS);
        synchronized (mService) {
            try {
                mParser.setString(Settings.Global.getString(mResolver,
                        Settings.Global.ACTIVITY_MANAGER_CONSTANTS));
                mParser.setString(setting);
            } catch (IllegalArgumentException e) {
                // Failed to parse the settings string, log this and move on
                // with defaults.
                Slog.e("ActivityManagerConstants", "Bad activity manager config settings", e);
            }

            ENFORCE_BG_CHECK = mParser.getBoolean(KEY_ENFORCE_BG_CHECK, DEFAULT_ENFORCE_BG_CHECK);
            MAX_CACHED_PROCESSES = mParser.getInt(KEY_MAX_CACHED_PROCESSES,
                    DEFAULT_MAX_CACHED_PROCESSES);