diff options
author | Keith Packard <keithp@keithp.com> | 2010-11-23 19:04:55 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2010-11-23 19:10:27 -0800 |
commit | ed7cf7d262fcf7c0c677c2fb981582b571de9e5e (patch) | |
tree | 221a759c5a7c1497b6f59cc3340d96353881780a /ao-tools | |
parent | 3b9db8c82d26a6a2e43d4ca40742fc1bdc502380 (diff) |
altosui: Make AltosSerial.flush_input keep reading while non-empty
Flushing the input buffer can take a while, especially over the packet
link. Keep reading while stuff is appearing on the reply queue.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'ao-tools')
-rw-r--r-- | ao-tools/altosui/AltosSerial.java | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/ao-tools/altosui/AltosSerial.java b/ao-tools/altosui/AltosSerial.java index ab74486b..8a6ad05e 100644 --- a/ao-tools/altosui/AltosSerial.java +++ b/ao-tools/altosui/AltosSerial.java @@ -114,16 +114,20 @@ public class AltosSerial implements Runnable { public void flush_input() { flush_output(); - try { - Thread.sleep(200); - } catch (InterruptedException ie) { - } - synchronized(this) { - if (!"VERSION".startsWith(line) && - !line.startsWith("VERSION")) - line = ""; - reply_queue.clear(); - } + boolean got_some; + do { + try { + Thread.sleep(100); + } catch (InterruptedException ie) { + } + got_some = !reply_queue.isEmpty(); + synchronized(this) { + if (!"VERSION".startsWith(line) && + !line.startsWith("VERSION")) + line = ""; + reply_queue.clear(); + } + } while (got_some); } public String get_reply() throws InterruptedException { |