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;