Keep last PV while clearing engine-output display
authorH.G. Muller <h.g.muller@hccnet.nl>
Sat, 6 Nov 2010 18:49:45 +0000 (19:49 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Tue, 9 Nov 2010 14:01:32 +0000 (15:01 +0100)
When ponder is on, the display is cleared immediately when the last line
of thinking output appears by the appearing ponder output. So you would
never get the chance to see it. This line is now re-written after
clearing, so it appears at the bottom of the output for the next search.

engineoutput.c

index 22b008c..00859bf 100644 (file)
@@ -70,6 +70,7 @@ static void UpdateControls( EngineOutputData * ed );
 static int  lastDepth[2] = { -1, -1 };
 static int  lastForwardMostMove[2] = { -1, -1 };
 static int  engineState[2] = { -1, -1 };
+static char lastLine[2][MSG_SIZ];
 
 #define MAX_VAR 400
 static int scores[MAX_VAR], textEnd[MAX_VAR], curDepth[2], nrVariations[2];
@@ -163,7 +164,13 @@ void SetProgramStats( FrontEndProgramStats * stats ) // now directly called by b
         clearMemo = TRUE;
     }
 
-    if( clearMemo ) { DoClearMemo(which); nrVariations[which] = 0; }
+    if( clearMemo ) {
+        DoClearMemo(which); nrVariations[which] = 0;
+        if(appData.ponderNextMove && lastLine[which][0]) {
+            InsertIntoMemo( which, lastLine[which], 0 );
+            InsertIntoMemo( which, "\n", 0 );
+        }
+    }
 
     /* Update */
     lastDepth[which] = depth == 1 && ed.nodes == 0 ? 0 : depth; // [HGM] info-line kudge
@@ -476,6 +483,7 @@ static void UpdateControls( EngineOutputData * ed )
 
         /* Update memo */
         InsertIntoMemo( ed->which, buf, InsertionPoint(strlen(buf), ed) );
+        strncpy(lastLine[ed->which], buf, MSG_SIZ);
     }
 
     /* Colors */