After a "stop" due to a ponder miss Xboard sends
immediately the new position to search, without
waiting for engine to effectively stop the search.
It is not clear if this is a GUI bug (as I suspect)
or allowed behaviour, but because it won't be fixed
anyway workaround this issue making listener thread
to switch to in-sync mode as soon as a "stop" command
is received.
Thanks to Mike Whiteley for reporting this.
No functional change.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
if (is_searching)
{
// Command "quit" is the last one received by the GUI, so park the
- // thread waiting for exiting.
- if (cmd == "quit")
+ // thread waiting for exiting. Also, after a "stop", for instance on a
+ // ponder miss, GUI can immediately send the new position to search,
+ // so return to in-sync mode to avoid discarding good data.
+ if (cmd == "quit" || cmd == "stop")
is_searching = false;
do_uci_async_cmd(cmd);