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

Commit fb872d1a authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change Id4d04def into eclair

* changes:
  Fix a race that kept the locale picker from working under heavy CPU load.
parents 89889733 d4d04def
Loading
Loading
Loading
Loading
+25 −7
Original line number Diff line number Diff line
@@ -2705,13 +2705,31 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
            // Have the window manager re-evaluate the orientation of
            // the screen based on the new activity order.
            boolean updated;
            synchronized (this) {
                Configuration config = mWindowManager.updateOrientationFromAppTokens(
                        mConfiguration,
                        next.mayFreezeScreenLocked(next.app) ? next : null);
                if (config != null) {
                    /*
                     * Explicitly restore the locale to the one from the
                     * old configuration, since the one that comes back from
                     * the window manager has the default (boot) locale.
                     *
                     * It looks like previously the locale picker only worked
                     * by coincidence: usually it would do its setting of
                     * the locale after the activity transition, so it didn't
                     * matter that this lost it.  With the synchronized
                     * block now keeping them from happening at the same time,
                     * this one always would happen second and undo what the
                     * locale picker had just done.
                     */
                    config.locale = mConfiguration.locale;
                    next.frozenBeforeDestroy = true;
                }
            if (!updateConfigurationLocked(config, next)) {
                updated = updateConfigurationLocked(config, next);
            }
            if (!updated) {
                // The configuration update wasn't able to keep the existing
                // instance of the activity, and instead started a new one.
                // We should be all done, but let's just make sure our activity