diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index d346de61d..a7141d7da 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -27,6 +27,7 @@ import java.awt.event.*; import java.io.*; import java.util.*; import java.util.List; +import java.util.concurrent.ConcurrentHashMap; import javax.jmdns.ServiceEvent; import javax.swing.*; @@ -116,7 +117,7 @@ public class Base { // int editorCount; List editors = Collections.synchronizedList(new ArrayList()); Editor activeEditor; - final Map> boardsViaNetwork; + private final Map> boardsViaNetwork; static File portableFolder = null; static final String portableSketchbookFolder = "sketchbook"; @@ -257,7 +258,7 @@ public class Base { public Base(String[] args) throws Exception { platform.init(this); - this.boardsViaNetwork = new HashMap>(); + this.boardsViaNetwork = new ConcurrentHashMap>(); // Get the sketchbook path, and make sure it's set properly String sketchbookPath = Preferences.get("sketchbook.path"); @@ -423,6 +424,9 @@ public class Base { }); } + public Map> getBoardsViaNetwork() { + return new HashMap>(boardsViaNetwork); + } /** * Post-constructor setup for the editor area. Loads the last diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index 0cc25863c..4709d99fb 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -1004,7 +1004,7 @@ public class Editor extends JFrame implements RunnerListener { exception.printStackTrace(); } - for (Map.Entry> entry : base.boardsViaNetwork.entrySet()) { + for (Map.Entry> entry : base.getBoardsViaNetwork().entrySet()) { Inet4Address[] a = (Inet4Address[]) entry.getValue().get("addresses"); String label = entry.getKey() + "@" + a[0].toString(); JCheckBoxMenuItem rbMenuItem = new JCheckBoxMenuItem(label, label.equals(Preferences.get("serial.port"))); diff --git a/app/src/processing/app/zeroconf/Discovery.java b/app/src/processing/app/zeroconf/Discovery.java index ba95163d1..bda225e08 100644 --- a/app/src/processing/app/zeroconf/Discovery.java +++ b/app/src/processing/app/zeroconf/Discovery.java @@ -2,10 +2,7 @@ package processing.app.zeroconf; import processing.app.zeroconf.jmdns.ArduinoDNSTaskStarter; -import javax.jmdns.JmDNS; -import javax.jmdns.NetworkTopologyDiscovery; -import javax.jmdns.ServiceEvent; -import javax.jmdns.ServiceListener; +import javax.jmdns.*; import javax.jmdns.impl.DNSTaskStarter; import java.io.IOException; import java.net.InetAddress; diff --git a/app/src/processing/app/zeroconf/jmdns/ArduinoDNSTaskStarter.java b/app/src/processing/app/zeroconf/jmdns/ArduinoDNSTaskStarter.java index 3243ae48d..fe9c25715 100644 --- a/app/src/processing/app/zeroconf/jmdns/ArduinoDNSTaskStarter.java +++ b/app/src/processing/app/zeroconf/jmdns/ArduinoDNSTaskStarter.java @@ -18,6 +18,7 @@ public class ArduinoDNSTaskStarter implements DNSTaskStarter.Factory.ClassDelega public void purgeTimer() { delegate.purgeTimer(); + timer.purge(); } public void purgeStateTimer() {