mild overhaul of Interpreter; now capable of performing MergeSort
[fleet.git] / src / edu / berkeley / fleet / interpreter / InterpreterShip.java
index 7f6397c..85358fa 100644 (file)
@@ -1,3 +1,4 @@
+
 package edu.berkeley.fleet.interpreter;
 import edu.berkeley.fleet.api.*;
 import edu.berkeley.fleet.two.*;
@@ -33,17 +34,19 @@ abstract class InterpreterShip extends FleetTwoShip {
         // flushing logic (must come between dock servicing and subclass)
         boolean someflushing = false;
         boolean allflushing = true;
+        boolean someempty = false;
         for(InterpreterDock d : docks.values()) {
             if (!d.isInputDock()) continue;
             if (d.flushing) someflushing = true;
             else allflushing = false;
+            if (!d.flushing && !d.dataReadyForShip) someempty = true;
         }
-        if (allflushing) {
+        if (allflushing && someflushing) {
             for(InterpreterDock d : docks.values())
                 if (d.isInputDock())
                     d.flushing = false;
             return;
-        } else if (someflushing) {
+        } else if (someflushing && !someempty) {
             for(InterpreterDock d : docks.values())
                 if (d.isInputDock() && !d.flushing && d.dataReadyForShip)
                     d.dataReadyForShip = false;