am b94a7fb3: Merge "Fix ConcurrentModificationException in TextServicesManagerService" into ics-mr1

* commit 'b94a7fb3d7483e8b47e4f0229fc7abff10a6572d':
  Fix ConcurrentModificationException in TextServicesManagerService
This commit is contained in:
satok
2011-11-30 17:39:12 -08:00
committed by Android Git Automerger

View File

@@ -392,9 +392,16 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
Slog.d(TAG, "FinishSpellCheckerService");
}
synchronized(mSpellCheckerMap) {
final ArrayList<SpellCheckerBindGroup> removeList =
new ArrayList<SpellCheckerBindGroup>();
for (SpellCheckerBindGroup group : mSpellCheckerBindGroups.values()) {
if (group == null) continue;
group.removeListener(listener);
// Use removeList to avoid modifying mSpellCheckerBindGroups in this loop.
removeList.add(group);
}
final int removeSize = removeList.size();
for (int i = 0; i < removeSize; ++i) {
removeList.get(i).removeListener(listener);
}
}
}
@@ -669,6 +676,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
}
}
// cleanLocked may remove elements from mSpellCheckerBindGroups
private void cleanLocked() {
if (DBG) {
Slog.d(TAG, "cleanLocked");