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)
}
private void start_timeout_dialog_internal() {
- System.out.printf("Creating timeout dialog\n");
Object[] options = { "Cancel" };
JOptionPane pane = new JOptionPane();
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();
}
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 {
+ boolean can_cancel = true;
+ if (SwingUtilities.isEventDispatchThread()) {
+ can_cancel = false;
+ System.out.printf("Uh-oh, reading serial device from swing thread\n");
+ }
flush_output();
- if (remote) {
+ if (remote && can_cancel) {
timeout = 300;
- System.out.printf("Doing remote timout\n");
}
abort = false;
timeout_started = false;
stop_timeout_dialog();
return line.line;
}
- if (!remote || check_timeout())
+ if (!remote || !can_cancel || check_timeout())
return null;
}
}
try {
flush_input();
} finally {
- System.out.printf("Sending tilde\n");
printf ("~\n");
flush_output();
}