diff options
author | 2017-07-07 22:21:21 +0000 | |
---|---|---|
committer | 2017-07-07 22:21:21 +0000 | |
commit | c13d5680c198f68d0aa1b75f809b85b0e686d404 (patch) | |
tree | 1e143b0a1ea13f684cd22d795417ac327ae4b200 | |
parent | e2ac8af6489ca597669476f4ac8fbe6ed4137092 (diff) | |
parent | 10ae385e29a0cc49e59b6ce53f803c938c1ec277 (diff) |
Merge "Use a separate lock object instead of mSpellCheckerMap"
-rw-r--r-- | services/core/java/com/android/server/TextServicesManagerService.java | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/services/core/java/com/android/server/TextServicesManagerService.java b/services/core/java/com/android/server/TextServicesManagerService.java index 7a9bf216e863..298de80843a8 100644 --- a/services/core/java/com/android/server/TextServicesManagerService.java +++ b/services/core/java/com/android/server/TextServicesManagerService.java @@ -85,6 +85,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { private final TextServicesSettings mSettings; @NonNull private final UserManager mUserManager; + private final Object mLock = new Object(); public static final class Lifecycle extends SystemService { private TextServicesManagerService mService; @@ -124,7 +125,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { } void systemRunning() { - synchronized (mSpellCheckerMap) { + synchronized (mLock) { if (!mSystemReady) { mSystemReady = true; resetInternalState(mSettings.getCurrentUserId()); @@ -133,13 +134,13 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { } void onSwitchUser(@UserIdInt int userId) { - synchronized (mSpellCheckerMap) { + synchronized (mLock) { resetInternalState(userId); } } void onUnlockUser(@UserIdInt int userId) { - synchronized(mSpellCheckerMap) { + synchronized (mLock) { final int currentUserId = mSettings.getCurrentUserId(); if (userId != currentUserId) { return; @@ -215,7 +216,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { if (!isChangingPackagesOfCurrentUser()) { return; } - synchronized (mSpellCheckerMap) { + synchronized (mLock) { buildSpellCheckerMapLocked( mContext, mSpellCheckerList, mSpellCheckerMap, mSettings); // TODO: Update for each locale @@ -440,7 +441,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { } private SpellCheckerInfo getCurrentSpellCheckerWithoutVerification() { - synchronized (mSpellCheckerMap) { + synchronized (mLock) { final String curSpellCheckerId = mSettings.getSelectedSpellChecker(); if (DBG) { Slog.w(TAG, "getCurrentSpellChecker: " + curSpellCheckerId); @@ -464,7 +465,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { final int subtypeHashCode; final SpellCheckerInfo sci; final Locale systemLocale; - synchronized (mSpellCheckerMap) { + synchronized (mLock) { subtypeHashCode = mSettings.getSelectedSpellCheckerSubtype(SpellCheckerSubtype.SUBTYPE_ID_NONE); if (DBG) { @@ -546,7 +547,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { Slog.e(TAG, "getSpellCheckerService: Invalid input."); return; } - synchronized(mSpellCheckerMap) { + synchronized (mLock) { if (!mSpellCheckerMap.containsKey(sciId)) { return; } @@ -578,7 +579,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { if (!calledFromValidUser()) { return false; } - synchronized(mSpellCheckerMap) { + synchronized (mLock) { return isSpellCheckerEnabledLocked(); } } @@ -628,7 +629,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { if (DBG) { Slog.d(TAG, "FinishSpellCheckerService"); } - synchronized(mSpellCheckerMap) { + synchronized (mLock) { final ArrayList<SpellCheckerBindGroup> removeList = new ArrayList<>(); for (SpellCheckerBindGroup group : mSpellCheckerBindGroups.values()) { if (group == null) continue; @@ -698,7 +699,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return; - synchronized(mSpellCheckerMap) { + synchronized (mLock) { pw.println("Current Text Services Manager state:"); pw.println(" Spell Checkers:"); int spellCheckerIndex = 0; @@ -796,7 +797,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { Slog.d(TAG, "onServiceConnected"); } - synchronized(mSpellCheckerMap) { + synchronized (mLock) { mSpellChecker = spellChecker; mConnected = true; // Dispatch pending getISpellCheckerSession requests. @@ -810,7 +811,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { Slog.d(TAG, "onServiceDisconnected"); } - synchronized(mSpellCheckerMap) { + synchronized (mLock) { mSpellChecker = null; mConnected = false; } @@ -820,7 +821,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { if (DBG) { Slog.w(TAG, "remove listener: " + listener.hashCode()); } - synchronized(mSpellCheckerMap) { + synchronized (mLock) { mListeners.unregister(listener); cleanLocked(); } @@ -858,7 +859,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { public void removeAll() { Slog.e(TAG, "Remove the spell checker bind unexpectedly."); - synchronized(mSpellCheckerMap) { + synchronized (mLock) { final int size = mListeners.getRegisteredCallbackCount(); for (int i = 0; i < size; ++i) { mListeners.unregister(mListeners.getRegisteredCallbackItem(i)); @@ -898,7 +899,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { void onSessionCreated(@Nullable final ISpellCheckerSession newSession, @NonNull final SessionRequest request) { - synchronized (mSpellCheckerMap) { + synchronized (mLock) { if (mUnbindCalled) { return; } @@ -926,7 +927,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { @Override public void onServiceConnected(ComponentName name, IBinder service) { - synchronized(mSpellCheckerMap) { + synchronized (mLock) { onServiceConnectedInnerLocked(name, service); } } @@ -945,7 +946,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { @Override public void onServiceDisconnected(ComponentName name) { - synchronized(mSpellCheckerMap) { + synchronized (mLock) { onServiceDisconnectedInnerLocked(name); } } |