diff options
| -rw-r--r-- | services/core/java/com/android/server/TextServicesManagerService.java | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/TextServicesManagerService.java b/services/core/java/com/android/server/TextServicesManagerService.java index 9068745c1ef3..18108234c004 100644 --- a/services/core/java/com/android/server/TextServicesManagerService.java +++ b/services/core/java/com/android/server/TextServicesManagerService.java @@ -865,6 +865,17 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { } } + public void onServiceDisconnected() { + if (DBG) { + Slog.d(TAG, "onServiceDisconnected"); + } + + synchronized(mSpellCheckerMap) { + mSpellChecker = null; + mConnected = false; + } + } + public void removeListener(ISpellCheckerSessionListener listener) { if (DBG) { Slog.w(TAG, "remove listener: " + listener.hashCode()); @@ -1019,10 +1030,17 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { @Override public void onServiceDisconnected(ComponentName name) { synchronized(mSpellCheckerMap) { - final SpellCheckerBindGroup group = mSpellCheckerBindGroups.get(mSciId); - if (group != null && this == group.mInternalConnection) { - mSpellCheckerBindGroups.remove(mSciId); - } + onServiceDisconnectedInnerLocked(name); + } + } + + private void onServiceDisconnectedInnerLocked(ComponentName name) { + if (DBG) { + Slog.w(TAG, "onServiceDisconnected: " + name); + } + final SpellCheckerBindGroup group = mSpellCheckerBindGroups.get(mSciId); + if (group != null && this == group.mInternalConnection) { + group.onServiceDisconnected(); } } } |