Fix blocking of input in ponder games
[uci2wb.git] / UCI2WB.c
index 2f450e8..9f1ad06 100644 (file)
--- a/UCI2WB.c
+++ b/UCI2WB.c
@@ -157,7 +157,7 @@ void
 StopPonder(int pondering)\r
 {\r
        if(!pondering) return;\r
-       pause = 2;\r
+       pause = 1;\r
        fprintf(toE, "stop\n"); fflush(toE); DPRINT("# stop\n"); // note: 'pondering' remains set until engine acknowledges 'stop' with 'bestmove'\r
        Sync(PAUSE); // wait for engine to acknowledge 'stop' with 'bestmove'.\r
 }\r
@@ -402,10 +402,10 @@ GUI2Engine()
            oldMem = memory;\r
            // we can set other options here\r
            if(sc == 'x') { if(newGame) fprintf(toE, "setoption newgame\n"); } else // optional in UCCI\r
-           fprintf(toE, "u%cinewgame\n", sc); fflush(toE);\r
            pause = 1; // wait for option settings to take effect\r
            fprintf(toE, "isready\n"); fflush(toE);\r
            Sync(PAUSE); // wait for readyok\r
+           fprintf(toE, "u%cinewgame\n", sc); fflush(toE);\r
        }\r
        else if(!strcmp(command, "usermove")) {\r
            sscanf(line, "usermove %s", command); // strips off linefeed\r
@@ -417,6 +417,7 @@ GUI2Engine()
                    char *draw = drawOffer ? " draw" : ""; drawOffer = 0;\r
                    pondering = 0; moveNr++; startTime = GetTickCount(); // clock starts running now\r
                    fprintf(toE, "ponderhit%s\n", draw); DPRINT("# ponderhit%s\n", draw);\r
+                   fflush(toE); fflush(stdout); pause = 2; Sync(PAUSE); // block input during thinking\r
                    goto nomove;\r
                }\r
                StopPonder(1);\r