diff options
author | Dianne Hackborn <hackbod@google.com> | 2011-07-19 18:06:25 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-07-19 18:06:25 -0700 |
commit | 116b208b3a1712b1f4b205f8aca8dc0d5491458e (patch) | |
tree | 13ab906626b681ad52dd732c449325d435e47806 /services/java/com | |
parent | 588bf7a53e844473dc9be6828a893664935121de (diff) | |
parent | 31ca854cdba31ec6ab089af743a8701a6192e07e (diff) | |
download | frameworks_base-116b208b3a1712b1f4b205f8aca8dc0d5491458e.zip frameworks_base-116b208b3a1712b1f4b205f8aca8dc0d5491458e.tar.gz frameworks_base-116b208b3a1712b1f4b205f8aca8dc0d5491458e.tar.bz2 |
Merge "Fix issue #4976176: Font size setting does not persist"
Diffstat (limited to 'services/java/com')
-rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 28 | ||||
-rw-r--r-- | services/java/com/android/server/am/ActivityStack.java | 6 |
2 files changed, 27 insertions, 7 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 94af46d..0924b86 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -2439,7 +2439,7 @@ public final class ActivityManagerService extends ActivityManagerNative r.mayFreezeScreenLocked(r.app) ? r : null); if (config != null) { r.frozenBeforeDestroy = true; - if (!updateConfigurationLocked(config, r)) { + if (!updateConfigurationLocked(config, r, false)) { mMainStack.resumeTopActivityLocked(null); } } @@ -12398,6 +12398,22 @@ public final class ActivityManagerService extends ActivityManagerNative return ci; } + public void updatePersistentConfiguration(Configuration values) { + enforceCallingPermission(android.Manifest.permission.CHANGE_CONFIGURATION, + "updateConfiguration()"); + enforceCallingPermission(android.Manifest.permission.WRITE_SETTINGS, + "updateConfiguration()"); + if (values == null) { + throw new NullPointerException("Configuration must not be null"); + } + + synchronized(this) { + final long origId = Binder.clearCallingIdentity(); + updateConfigurationLocked(values, null, true); + Binder.restoreCallingIdentity(origId); + } + } + public void updateConfiguration(Configuration values) { enforceCallingPermission(android.Manifest.permission.CHANGE_CONFIGURATION, "updateConfiguration()"); @@ -12409,7 +12425,10 @@ public final class ActivityManagerService extends ActivityManagerNative } final long origId = Binder.clearCallingIdentity(); - updateConfigurationLocked(values, null); + if (values != null) { + Settings.System.clearConfiguration(values); + } + updateConfigurationLocked(values, null, false); Binder.restoreCallingIdentity(origId); } } @@ -12420,9 +12439,10 @@ public final class ActivityManagerService extends ActivityManagerNative * configuration. Returns true if the activity has been left running, or * false if <var>starting</var> is being destroyed to match the new * configuration. + * @param persistent TODO */ public boolean updateConfigurationLocked(Configuration values, - ActivityRecord starting) { + ActivityRecord starting, boolean persistent) { int changes = 0; boolean kept = true; @@ -12465,7 +12485,7 @@ public final class ActivityManagerService extends ActivityManagerNative // code is executed. mSystemThread.applyConfigurationToResources(newConfig); - if (Settings.System.hasInterestingConfigurationChanges(changes)) { + if (persistent && Settings.System.hasInterestingConfigurationChanges(changes)) { Message msg = mHandler.obtainMessage(UPDATE_CONFIGURATION_MSG); msg.obj = new Configuration(mConfiguration); mHandler.sendMessage(msg); diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java index 93d8164..0d89081 100644 --- a/services/java/com/android/server/am/ActivityStack.java +++ b/services/java/com/android/server/am/ActivityStack.java @@ -518,7 +518,7 @@ final class ActivityStack { Configuration config = mService.mWindowManager.updateOrientationFromAppTokens( mService.mConfiguration, r.mayFreezeScreenLocked(app) ? r : null); - mService.updateConfigurationLocked(config, r); + mService.updateConfigurationLocked(config, r, false); } r.app = app; @@ -1424,7 +1424,7 @@ final class ActivityStack { if (config != null) { next.frozenBeforeDestroy = true; } - updated = mService.updateConfigurationLocked(config, next); + updated = mService.updateConfigurationLocked(config, next, false); } } if (!updated) { @@ -2817,7 +2817,7 @@ final class ActivityStack { mConfigWillChange = false; if (DEBUG_CONFIGURATION) Slog.v(TAG, "Updating to new configuration after starting activity."); - mService.updateConfigurationLocked(config, null); + mService.updateConfigurationLocked(config, null, false); } Binder.restoreCallingIdentity(origId); |