From 98148085b6ebed0630c366877247c44fad958c03 Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Wed, 23 Nov 2011 12:13:51 +0000 Subject: [PATCH] Don't lock the list of listeners while calling them. --- .../net/sf/briar/db/DatabaseComponentImpl.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/components/net/sf/briar/db/DatabaseComponentImpl.java b/components/net/sf/briar/db/DatabaseComponentImpl.java index 92420cca1d..56b9f82532 100644 --- a/components/net/sf/briar/db/DatabaseComponentImpl.java +++ b/components/net/sf/briar/db/DatabaseComponentImpl.java @@ -198,14 +198,15 @@ DatabaseCleaner.Callback { /** Notifies all listeners of a database event. */ private void callListeners(DatabaseEvent e) { + List<DatabaseListener> copy; synchronized(listeners) { - if(!listeners.isEmpty()) { - // Shuffle the listeners so we don't always send new messages - // to contacts in the same order - Collections.shuffle(listeners); - for(DatabaseListener d : listeners) d.eventOccurred(e); - } + if(listeners.isEmpty()) return; + copy = new ArrayList<DatabaseListener>(listeners); } + // Shuffle the listeners so we don't always send new messages + // to contacts in the same order + Collections.shuffle(copy); + for(DatabaseListener d : copy) d.eventOccurred(e); } public void addLocalGroupMessage(Message m) throws DbException { -- GitLab