aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/anysoftkeyboard
diff options
context:
space:
mode:
authorMenny Even Danan <menny@evendanan.net>2016-03-30 16:48:27 +0000
committerMenny Even Danan <menny@evendanan.net>2016-03-30 16:48:27 +0000
commitbb099a242cd9e498b0f26ad10ef97f71ca5c31b9 (patch)
treefe6eaca4d8d5db4892a66dec4eb3ea1725d15de2 /src/main/java/com/anysoftkeyboard
parentefdc93b772159884fb74feac7a49703a82c7204a (diff)
downloadAnySoftKeyboard-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.java11
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) {