altosui: When switching log files, don't terminate log thread
[fw/altos] / ao-tools / altosui / AltosLog.java
index 137147d5cc1aa2079c66ef1cf7d865a0cf2e3965..11319768c1d2548093458287a8bdbb3628699f58 100644 (file)
@@ -36,15 +36,23 @@ class AltosLog implements Runnable {
        FileWriter                      log_file;
        Thread                          log_thread;
 
-       void close() {
+       private void close_log_file() {
                if (log_file != null) {
                        try {
                                log_file.close();
                        } catch (IOException io) {
                        }
+                       log_file = null;
                }
-               if (log_thread != null)
+       }
+
+       void close() {
+               close_log_file();
+               if (log_thread != null) {
+                       log_thread.interrupt();
+                       log_thread = null;
                        log_thread.interrupt();
+               }
        }
 
        boolean open (AltosTelemetry telem) throws IOException {
@@ -74,7 +82,7 @@ class AltosLog implements Runnable {
                                try {
                                        AltosTelemetry  telem = new AltosTelemetry(line.line);
                                        if (telem.serial != serial || telem.flight != flight || log_file == null) {
-                                               close();
+                                               close_log_file();
                                                serial = telem.serial;
                                                flight = telem.flight;
                                                open(telem);