Skip to content

Commit 7032da0

Browse files
authored
Merge pull request umano#703 from gfred/bugfixConcurrent
Bugfix: java.util.ConcurrentModificationException on mPanelSlideListeners
2 parents 0c642d2 + 5d801c8 commit 7032da0

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

library/src/main/java/com/sothree/slidinguppanel/SlidingUpPanelLayout.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,9 @@ public void setMinFlingVelocity(int val) {
500500
* @param listener
501501
*/
502502
public void addPanelSlideListener(PanelSlideListener listener) {
503-
mPanelSlideListeners.add(listener);
503+
synchronized (mPanelSlideListeners) {
504+
mPanelSlideListeners.add(listener);
505+
}
504506
}
505507

506508
/**
@@ -509,7 +511,9 @@ public void addPanelSlideListener(PanelSlideListener listener) {
509511
* @param listener
510512
*/
511513
public void removePanelSlideListener(PanelSlideListener listener) {
512-
mPanelSlideListeners.remove(listener);
514+
synchronized (mPanelSlideListeners) {
515+
mPanelSlideListeners.remove(listener);
516+
}
513517
}
514518

515519
/**
@@ -638,15 +642,21 @@ public boolean isClipPanel() {
638642
return mClipPanel;
639643
}
640644

645+
641646
void dispatchOnPanelSlide(View panel) {
642-
for (PanelSlideListener l : mPanelSlideListeners) {
643-
l.onPanelSlide(panel, mSlideOffset);
647+
synchronized (mPanelSlideListeners) {
648+
for (PanelSlideListener l : mPanelSlideListeners) {
649+
l.onPanelSlide(panel, mSlideOffset);
650+
}
644651
}
645652
}
646653

654+
647655
void dispatchOnPanelStateChanged(View panel, PanelState previousState, PanelState newState) {
648-
for (PanelSlideListener l : mPanelSlideListeners) {
649-
l.onPanelStateChanged(panel, previousState, newState);
656+
synchronized (mPanelSlideListeners) {
657+
for (PanelSlideListener l : mPanelSlideListeners) {
658+
l.onPanelStateChanged(panel, previousState, newState);
659+
}
650660
}
651661
sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
652662
}

0 commit comments

Comments
 (0)