diff options
| author | Menny Even Danan <menny@evendanan.net> | 2016-03-30 16:48:27 +0000 |
|---|---|---|
| committer | Menny Even Danan <menny@evendanan.net> | 2016-03-30 16:48:27 +0000 |
| commit | bb099a242cd9e498b0f26ad10ef97f71ca5c31b9 (patch) | |
| tree | fe6eaca4d8d5db4892a66dec4eb3ea1725d15de2 /src/main/java/com/anysoftkeyboard | |
| parent | efdc93b772159884fb74feac7a49703a82c7204a (diff) | |
| download | AnySoftKeyboard-bb099a242cd9e498b0f26ad10ef97f71ca5c31b9.tar.gz AnySoftKeyboard-bb099a242cd9e498b0f26ad10ef97f71ca5c31b9.tar.bz2 | |
avoiding ConcurrentModificationException. Issue #597
Diffstat (limited to 'src/main/java/com/anysoftkeyboard')
| -rw-r--r-- | src/main/java/com/anysoftkeyboard/keyboards/views/AnyKeyboardBaseView.java | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/src/main/java/com/anysoftkeyboard/keyboards/views/AnyKeyboardBaseView.java b/src/main/java/com/anysoftkeyboard/keyboards/views/AnyKeyboardBaseView.java index 0b67f1893..6a3f35620 100644 --- a/src/main/java/com/anysoftkeyboard/keyboards/views/AnyKeyboardBaseView.java +++ b/src/main/java/com/anysoftkeyboard/keyboards/views/AnyKeyboardBaseView.java @@ -332,19 +332,16 @@ public class AnyKeyboardBaseView extends View implements } public void releaseAllPointersOlderThan(final PointerTracker tracker, final long eventTime) { - ArrayList<PointerTracker> pointersToRemove = new ArrayList<>(); - for (PointerTracker t : mQueue) { + //doing a copy to prevent ConcurrentModificationException + PointerTracker[] trackers = mQueue.toArray(new PointerTracker[mQueue.size()]); + for (PointerTracker t : trackers) { if (t == tracker) break; if (!t.isModifier()) { t.onUpEvent(t.getLastX(), t.getLastY(), eventTime); t.setAlreadyProcessed(); - pointersToRemove.add(t); + mQueue.remove(t); } } - - for (int i = 0, pointersToRemoveSize = pointersToRemove.size(); i < pointersToRemoveSize; i++) { - mQueue.remove(pointersToRemove.get(i)); - } } public void releaseAllPointersExcept(PointerTracker tracker, long eventTime) { |
