Launch searches at end of GUI loop
authorH.G.Muller <hgm@hgm-xboard.(none)>
Sat, 8 Dec 2018 09:21:03 +0000 (10:21 +0100)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Sat, 8 Dec 2018 09:21:03 +0000 (10:21 +0100)
The loop for interpreting GUI commands is restructured by launching
searches at the bottom of it rather than at the top. As it was an
infinite loop anyway this only eliminates the first call to LaunchSearch(),
which is OK as the engine would never have to search before any commands
were received.
  As this change brought the 'nomove' label to the top of the loop,
the 'goto's to it could be replaced by 'continue's, and the label deleted.
That for engines that cannot ponder the 'easy' and 'hard' commands now
skip LaunchSearch() is OK, as LaunchSearch() would not do anything in
that case.

UCI2WB.c

index d44de74..b9df43c 100644 (file)
--- a/UCI2WB.c
+++ b/UCI2WB.c
@@ -469,8 +469,6 @@ GUI2Engine()
     while(1) {\r
        int i, difficult;\r
 \r
-       LaunchSearch(); // start a search if we need one\r
-      nomove:\r
        for(difficult=0; !difficult; ) { // read and handle commands that can (or must) be handled during thinking\r
        fflush(toE); fflush(stdout);\r
        if(!ReadLine(stdin, line)) printf("# EOF\n"), sprintf(line, "quit -1\n");\r
@@ -525,7 +523,7 @@ GUI2Engine()
                    searching = 0; pause = 2; moveNr++; startTime = GetTickCount(); // clock starts running now\r
                    EPRINT((f, "# ponderhit%s\n", draw)) fflush(toE); fflush(stdout);\r
                    searching = 3; // request blocking input during thinking\r
-                   goto nomove;\r
+                   continue;\r
                }\r
                StopPonder(1); searching = 0;\r
            }\r
@@ -544,8 +542,10 @@ GUI2Engine()
        }\r
        if(qStart == qEnd) qStart = qEnd = queue;\r
        p = line; while(qEnd < queue+10000 && (*qEnd++ = *p++) != '\n') {}\r
-       if(DoCommand()) goto nomove;\r
+       if(DoCommand()) continue;\r
       }\r
+\r
+       LaunchSearch(); // start a search if we need one\r
     }\r
 }\r
 \r