summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/TextServicesManagerService.java26
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();
}
}
}