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

Commit e6f63800 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android (Google) Code Review
Browse files

Merge "Fix issue #7196015: system_server deadlock during setup wizard" into jb-mr1-dev

parents 314488b7 73c14161
Loading
Loading
Loading
Loading
+36 −41
Original line number Diff line number Diff line
@@ -3638,11 +3638,16 @@ public final class ActivityThread {
        }
    }

    ArrayList<ComponentCallbacks2> collectComponentCallbacksLocked(
    ArrayList<ComponentCallbacks2> collectComponentCallbacks(
            boolean allActivities, Configuration newConfig) {
        ArrayList<ComponentCallbacks2> callbacks
                = new ArrayList<ComponentCallbacks2>();

        synchronized (mPackages) {
            final int N = mAllApplications.size();
            for (int i=0; i<N; i++) {
                callbacks.add(mAllApplications.get(i));
            }
            if (mActivities.size() > 0) {
                for (ActivityClientRecord ar : mActivities.values()) {
                    Activity a = ar.activity;
@@ -3673,6 +3678,7 @@ public final class ActivityThread {
                    callbacks.add(service);
                }
            }
        }
        synchronized (mProviderMap) {
            if (mLocalProviders.size() > 0) {
                for (ProviderClientRecord providerClientRecord : mLocalProviders.values()) {
@@ -3680,10 +3686,6 @@ public final class ActivityThread {
                }
            }
        }
        final int N = mAllApplications.size();
        for (int i=0; i<N; i++) {
            callbacks.add(mAllApplications.get(i));
        }

        return callbacks;
    }
@@ -3844,7 +3846,6 @@ public final class ActivityThread {

    final void handleConfigurationChanged(Configuration config, CompatibilityInfo compat) {

        ArrayList<ComponentCallbacks2> callbacks = null;
        int configDiff = 0;

        synchronized (mPackages) {
@@ -3875,9 +3876,10 @@ public final class ActivityThread {
            configDiff = mConfiguration.diff(config);
            mConfiguration.updateFrom(config);
            config = applyCompatConfiguration(mCurDefaultDisplayDpi);
            callbacks = collectComponentCallbacksLocked(false, config);
        }

        ArrayList<ComponentCallbacks2> callbacks = collectComponentCallbacks(false, config);

        // Cleanup hardware accelerated stuff
        WindowManagerGlobal.getInstance().trimLocalMemory();

@@ -3990,11 +3992,7 @@ public final class ActivityThread {
    }
        
    final void handleLowMemory() {
        ArrayList<ComponentCallbacks2> callbacks;

        synchronized (mPackages) {
            callbacks = collectComponentCallbacksLocked(true, null);
        }
        ArrayList<ComponentCallbacks2> callbacks = collectComponentCallbacks(true, null);

        final int N = callbacks.size();
        for (int i=0; i<N; i++) {
@@ -4022,10 +4020,7 @@ public final class ActivityThread {
        final WindowManagerGlobal windowManager = WindowManagerGlobal.getInstance();
        windowManager.startTrimMemory(level);

        ArrayList<ComponentCallbacks2> callbacks;
        synchronized (mPackages) {
            callbacks = collectComponentCallbacksLocked(true, null);
        }
        ArrayList<ComponentCallbacks2> callbacks = collectComponentCallbacks(true, null);

        final int N = callbacks.size();
        for (int i = 0; i < N; i++) {