projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altosui: Handle serial calls from swing thread
[fw/altos]
/
altosui
/
AltosSerial.java
diff --git
a/altosui/AltosSerial.java
b/altosui/AltosSerial.java
index 88b38bb176f01ad00db321de36fb698d2c14019c..57e1344860686d1684583e183f14b7c4eeeb041f 100644
(file)
--- a/
altosui/AltosSerial.java
+++ b/
altosui/AltosSerial.java
@@
-137,7
+137,6
@@
public class AltosSerial implements Runnable {
boolean timeout_started = false;
private void stop_timeout_dialog() {
boolean timeout_started = false;
private void stop_timeout_dialog() {
- System.out.printf("stop_timeout_dialog\n");
Runnable r = new Runnable() {
public void run() {
if (timeout_dialog != null)
Runnable r = new Runnable() {
public void run() {
if (timeout_dialog != null)
@@
-148,7
+147,6
@@
public class AltosSerial implements Runnable {
}
private void start_timeout_dialog_internal() {
}
private void start_timeout_dialog_internal() {
- System.out.printf("Creating timeout dialog\n");
Object[] options = { "Cancel" };
JOptionPane pane = new JOptionPane();
Object[] options = { "Cancel" };
JOptionPane pane = new JOptionPane();
@@
-170,10
+168,7
@@
public class AltosSerial implements Runnable {
private boolean check_timeout() {
if (!timeout_started && frame != null) {
timeout_started = true;
private boolean check_timeout() {
if (!timeout_started && frame != null) {
timeout_started = true;
- System.out.printf("Starting timeout dialog\n");
- if (SwingUtilities.isEventDispatchThread()) {
- start_timeout_dialog_internal();
- } else {
+ if (!SwingUtilities.isEventDispatchThread()) {
Runnable r = new Runnable() {
public void run() {
start_timeout_dialog_internal();
Runnable r = new Runnable() {
public void run() {
start_timeout_dialog_internal();
@@
-208,16
+203,22
@@
public class AltosSerial implements Runnable {
}
public String get_reply() throws InterruptedException {
}
public String get_reply() throws InterruptedException {
+ if (SwingUtilities.isEventDispatchThread())
+ System.out.printf("Uh-oh, reading serial device from swing thread\n");
flush_output();
AltosLine line = reply_queue.take();
return line.line;
}
public String get_reply(int timeout) throws InterruptedException {
flush_output();
AltosLine line = reply_queue.take();
return line.line;
}
public String get_reply(int timeout) throws InterruptedException {
+ boolean can_cancel = true;
+ if (SwingUtilities.isEventDispatchThread()) {
+ can_cancel = false;
+ System.out.printf("Uh-oh, reading serial device from swing thread\n");
+ }
flush_output();
flush_output();
- if (remote) {
+ if (remote
&& can_cancel
) {
timeout = 300;
timeout = 300;
- System.out.printf("Doing remote timout\n");
}
abort = false;
timeout_started = false;
}
abort = false;
timeout_started = false;
@@
-227,7
+228,7
@@
public class AltosSerial implements Runnable {
stop_timeout_dialog();
return line.line;
}
stop_timeout_dialog();
return line.line;
}
- if (!remote || check_timeout())
+ if (!remote ||
!can_cancel ||
check_timeout())
return null;
}
}
return null;
}
}
@@
-362,7
+363,6
@@
public class AltosSerial implements Runnable {
try {
flush_input();
} finally {
try {
flush_input();
} finally {
- System.out.printf("Sending tilde\n");
printf ("~\n");
flush_output();
}
printf ("~\n");
flush_output();
}