summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2010-09-03 01:30:33 -0700
committerKeith Packard <keithp@keithp.com>2010-09-03 07:04:28 -0700
commit71191ecef3ba0e00d0f8a7cd1a24982bfa44ec72 (patch)
treea519a7efe0b8b40e17c509ed21279c33e1e21689
parentba65e4aeb952a1cf49a77f1e24e235508fcea71f (diff)
altosui: Allow 'connect to device' when already connected
Opening another serial device involves shutting down the display thread (to reset its state) and spawning another one. Shutting down the display thread normally closes the serial device as a part of the process, and if this isn't done before the new serial device is opened, then the new serial device ends up getting closed too. Interrupting the display thread and waiting for it to stop before opening the new serial device solves the problem. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--ao-tools/altosui/AltosUI.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/ao-tools/altosui/AltosUI.java b/ao-tools/altosui/AltosUI.java
index e3f61303..e63a004c 100644
--- a/ao-tools/altosui/AltosUI.java
+++ b/ao-tools/altosui/AltosUI.java
@@ -441,6 +441,7 @@ public class AltosUI extends JFrame {
if (device != null) {
try {
+ stop_display();
serial_line.open(device);
DeviceThread thread = new DeviceThread(serial_line);
serial_line.set_channel(AltosPreferences.channel());
@@ -536,8 +537,12 @@ public class AltosUI extends JFrame {
Thread display_thread;
private void stop_display() {
- if (display_thread != null && display_thread.isAlive())
+ if (display_thread != null && display_thread.isAlive()) {
display_thread.interrupt();
+ try {
+ display_thread.join();
+ } catch (InterruptedException ie) {}
+ }
display_thread = null;
}