new version number for release 4.7.3
[xboard.git] / engineoutput.c
index 0752428..e22df5e 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Copyright 2005 Alessandro Scotti
  *
- * Enhancements Copyright 1995, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+ * Enhancements Copyright 1995, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
  *
  * ------------------------------------------------------------------------
  *
@@ -89,7 +89,7 @@ static int  lastDepth[2] = { -1, -1 };
 static int  lastForwardMostMove[2] = { -1, -1 };
 static int  engineState[2] = { -1, -1 };
 static char lastLine[2][MSG_SIZ];
-static char header[MSG_SIZ];
+static char header[2][MSG_SIZ];
 
 #define MAX_VAR 400
 static int scores[MAX_VAR], textEnd[MAX_VAR], keys[MAX_VAR], curDepth[2], nrVariations[2];
@@ -113,7 +113,7 @@ MakeEngineOutputTitle ()
        if( count == backwardMostMove ) count -= initialRulePlies;
        count = currentMove - count;
        if(!rule) rule = 100;
-       if(count >= rule - 40 && (!appData.icsActive || gameMode == IcsObserving)) {
+       if(count >= rule - 40 && (!appData.icsActive || gameMode == IcsObserving || appData.zippyPlay)) {
                snprintf(buf, MSG_SIZ, ngettext("%s (%d reversible ply)", "%s (%d reversible plies)", count), title, count);
                safeStrCpy(title, buf, MSG_SIZ);
        }
@@ -223,14 +223,15 @@ SetProgramStats (FrontEndProgramStats * stats) // now directly called by back-en
 
     if( clearMemo ) {
         DoClearMemo(which); nrVariations[which] = 0;
-        header[0] = NULLCHAR;
+        header[which][0] = NULLCHAR;
         if(gameMode == AnalyzeMode) {
-          if((multi = MultiPV(&first)) >= 0) {
-            snprintf(header, MSG_SIZ, "\t%s viewpoint\t\tfewer / Multi-PV setting = %d / more\n",
-                                       appData.whitePOV || appData.scoreWhite ? "white" : "mover", first.option[multi].value);
+          ChessProgramState *cps = (which ? &second : &first);
+          if((multi = MultiPV(cps)) >= 0) {
+            snprintf(header[which], MSG_SIZ, "\t%s viewpoint\t\tfewer / Multi-PV setting = %d / more\n",
+                                       appData.whitePOV || appData.scoreWhite ? "white" : "mover", cps->option[multi].value);
          }
-          snprintf(header+strlen(header), MSG_SIZ-strlen(header), "%s", exclusionHeader);
-          InsertIntoMemo( which, header, 0);
+          if(!which) snprintf(header[which]+strlen(header[which]), MSG_SIZ-strlen(header[which]), "%s", exclusionHeader);
+          InsertIntoMemo( which, header[which], 0);
         } else
         if(appData.ponderNextMove && lastLine[which][0]) {
             InsertIntoMemo( which, lastLine[which], 0 );
@@ -347,12 +348,14 @@ VerifyDisplayMode ()
     switch( gameMode ) {
     case IcsObserving:    // [HGM] ICS analyze
        if(!appData.icsEngineAnalyze) return;
-    case AnalyzeMode:
     case AnalyzeFile:
     case MachinePlaysWhite:
     case MachinePlaysBlack:
         mode = 0;
         break;
+    case AnalyzeMode:
+        mode = second.analyzing;
+        break;
     case IcsPlayingWhite:
     case IcsPlayingBlack:
         mode = appData.zippyPlay && opponentKibitzes; // [HGM] kibitz
@@ -410,7 +413,7 @@ InsertionPoint (int len, EngineOutputData *ed)
                if(ed->moveKey != keys[i+n] && // same move always tops previous one (as a higher score must be a fail low)
                   newScore < scores[i+n]) break;
                // if it had higher score as previous, move previous in stead
-               scores[i+n+2] = scores[i+n];
+               scores[i+n+2] = ed->moveKey == keys[i+n] ? newScore : scores[i+n]; // correct scores of fail-low/high searches
                textEnd[i+n+2] = textEnd[i+n] + len;
                keys[i+n+2] = keys[i+n];
        }
@@ -420,7 +423,7 @@ InsertionPoint (int len, EngineOutputData *ed)
                scores[n] = newScore;
        }
        nrVariations[n] += 2;
-      return offs + (gameMode == AnalyzeMode)*strlen(header);
+      return offs + (gameMode == AnalyzeMode)*strlen(header[ed->which]);
 }