Unify 'ponderhit' handling
authorMarco Costalba <mcostalba@gmail.com>
Sun, 13 Jan 2013 13:36:27 +0000 (14:36 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 13 Jan 2013 13:39:41 +0000 (14:39 +0100)
Finally we can now merge the 'ponderhit' case with
'stop' and 'quit'.

The patches have been done step by step to help debugging
becuase this is really tricky code.

No functional change.

src/uci.cpp

index ddaad41725aae83c8161549199649990ca719c68..33b4ef1ad6182ea1562f5ac154c7abc0d2e209e9 100644 (file)
@@ -66,19 +66,14 @@ void UCI::loop(const string& args) {
 
       is >> skipws >> token;
 
-      if (token == "quit" || token == "stop")
+      if (token == "quit" || token == "stop" || token == "ponderhit")
       {
-          Search::Signals.stop = true;
-          Threads.main_thread()->wake_up(); // Could be sleeping
-      }
-      else if (token == "ponderhit")
-      {
-          // GUI sends "ponderhit" if we were told to ponder on the same move the
+          // GUI sends 'ponderhit' to tell us to ponder on the same move the
           // opponent has played. In case Signals.stopOnPonderhit is set we are
-          // waiting for "ponderhit" to stop the search (for instance because we
+          // waiting for 'ponderhit' to stop the search (for instance because we
           // already ran out of time), otherwise we should continue searching but
           // switching from pondering to normal search.
-          if (Search::Signals.stopOnPonderhit)
+          if (token != "ponderhit" || Search::Signals.stopOnPonderhit)
           {
               Search::Signals.stop = true;
               Threads.main_thread()->wake_up(); // Could be sleeping