OSDN Git Service

Persist configuration for the calling or current user
authorAmith Yamasani <yamasani@google.com>
Mon, 25 Jul 2016 21:59:57 +0000 (14:59 -0700)
committerAmith Yamasani <yamasani@google.com>
Tue, 26 Jul 2016 00:58:12 +0000 (17:58 -0700)
Persist the font size change to the correct user.

Bug: 30273473
Change-Id: Ia29735d4112720389a30b61f961f6c1071ce4ba2

services/core/java/com/android/server/am/ActivityManagerService.java

index 59e3096..0408d5a 100644 (file)
@@ -1086,9 +1086,9 @@ public final class ActivityManagerService extends ActivityManagerNative
         }
 
         @Override
-        public void onChange(boolean selfChange, Uri uri) {
+        public void onChange(boolean selfChange, Uri uri, @UserIdInt int userId) {
             if (mFontScaleUri.equals(uri)) {
-                updateFontScaleIfNeeded();
+                updateFontScaleIfNeeded(userId);
             }
         }
     }
@@ -18681,23 +18681,28 @@ public final class ActivityManagerService extends ActivityManagerNative
         int userId = UserHandle.getCallingUserId();
 
         synchronized(this) {
-            final long origId = Binder.clearCallingIdentity();
+            updatePersistentConfigurationLocked(values, userId);
+        }
+    }
+
+    private void updatePersistentConfigurationLocked(Configuration values, @UserIdInt int userId) {
+        final long origId = Binder.clearCallingIdentity();
+        try {
             updateConfigurationLocked(values, null, false, true, userId, false /* deferResume */);
+        } finally {
             Binder.restoreCallingIdentity(origId);
         }
     }
 
-    private void updateFontScaleIfNeeded() {
-        final int currentUserId;
-        synchronized(this) {
-            currentUserId = mUserController.getCurrentUserIdLocked();
-        }
+    private void updateFontScaleIfNeeded(@UserIdInt int userId) {
         final float scaleFactor = Settings.System.getFloatForUser(mContext.getContentResolver(),
-                FONT_SCALE, 1.0f, currentUserId);
+                FONT_SCALE, 1.0f, userId);
         if (mConfiguration.fontScale != scaleFactor) {
             final Configuration configuration = mWindowManager.computeNewConfiguration();
             configuration.fontScale = scaleFactor;
-            updatePersistentConfiguration(configuration);
+            synchronized (this) {
+                updatePersistentConfigurationLocked(configuration, userId);
+            }
         }
     }