From 70bfb7989d9e4edaabc022d833f4b089273302e1 Mon Sep 17 00:00:00 2001 From: Sebastien Vincent Date: Thu, 8 Mar 2012 16:26:20 +0000 Subject: [PATCH] Fixes some ConcurrentModificationException in CallManager. --- .../impl/gui/main/call/CallManager.java | 17 +++++++++++------ .../impl/gui/main/call/CallPanel.java | 3 ++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java b/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java index 3f917bce6..de08d5503 100644 --- a/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java +++ b/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java @@ -160,9 +160,11 @@ public void callStateChanged(CallChangeEvent evt) } }); - for(Map.Entry entry : activeCalls.entrySet()) + List calls = new ArrayList( + activeCalls.values()); + + for(CallPanel cp : calls) { - CallPanel cp = entry.getValue(); if(cp != null) cp.incomingCallReceived(event); } @@ -203,10 +205,11 @@ public void callEnded(CallEvent event) activeCalls.remove(sourceCall); callContainer.getCallWindow().closeWait(callContainer); + List calls = new ArrayList( + activeCalls.values()); - for(Map.Entry entry : activeCalls.entrySet()) + for(CallPanel cp : calls) { - CallPanel cp = entry.getValue(); if(cp != null) cp.incomingCallReceived(event); } @@ -224,9 +227,11 @@ public void outgoingCallCreated(CallEvent event) CallManager.openCallContainer(sourceCall); - for(Map.Entry entry : activeCalls.entrySet()) + List calls = new ArrayList( + activeCalls.values()); + + for(CallPanel cp : calls) { - CallPanel cp = entry.getValue(); if(cp != null) cp.incomingCallReceived(event); } diff --git a/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java b/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java index a24d444e9..9f522c9f1 100644 --- a/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java +++ b/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java @@ -1629,7 +1629,8 @@ public void callEnded(CallEvent event) */ public void updateMergeButtonState() { - Collection calls = CallManager.getActiveCalls(); + Collection calls = new ArrayList( + CallManager.getActiveCalls()); java.util.List groups = new java.util.ArrayList(); int cpt = 0;