X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Fsearch.c;h=c1d8fd99eb062b75ac93ff394ca43e71164fe118;hb=cbf4ad5e9942032a96215a4c7f095a4777bf0021;hp=3d49b8b897cdbc32d062bb56431bf7f247a6ca80;hpb=1aca00e04580e7b3effefa535edb469876ecce74;p=gnushogi.git
diff --git a/gnushogi/search.c b/gnushogi/search.c
index 3d49b8b..c1d8fd9 100644
--- a/gnushogi/search.c
+++ b/gnushogi/search.c
@@ -14,8 +14,8 @@
*
* GNU Shogi is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 1, or (at your option) any
- * later version.
+ * Free Software Foundation; either version 3 of the License,
+ * or (at your option) any later version.
*
* GNU Shogi is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
@@ -23,17 +23,15 @@
* for more details.
*
* You should have received a copy of the GNU General Public License along
- * with GNU Shogi; see the file COPYING. If not, write to the Free
- * Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * with GNU Shogi; see the file COPYING. If not, see
+ * .
* ----------------------------------------------------------------------
*
*/
#include "gnushogi.h"
-
-#if !defined OLDTIME && defined HAVE_GETTIMEOFDAY
-double pow(double x, double y);
-#endif
+#include
+#include
short background = 0;
static short DepthBeyond;
@@ -176,6 +174,7 @@ SelectMove(short side, SelectMove_mode iop)
}
else
{
+ background = false; /* [HGM] with ponder on we did not switch back to foreground mode??? */
player = side;
SetResponseTime(side);
}
@@ -529,6 +528,8 @@ search(short side,
short best = -(SCORE_LIMIT + 3000);
short bestwidth = 0;
short mustcut;
+ static struct pollfd pollfds[1] = { /* [0] = */ { /* .fd = */ STDIN_FILENO,
+ /* .events = */ POLLIN } };
#ifdef NULLMOVE
short PVsave;
@@ -546,6 +547,19 @@ search(short side,
{
ElapsedTime(COMPUTE_MODE);
+ if(background) {
+ int cnt = poll(pollfds, sizeof(pollfds)/sizeof(pollfds[0]), 0);
+ if (cnt < 0) {
+ perror("polling standard input");
+ ExitShogi();
+ }
+ if (cnt) { /* if anything to read, or error occured */
+ if (!flag.timeout)
+ flag.back = true; /* previous: flag.timeout = true; */
+ flag.bothsides = false;
+ }
+ }
+
if (flag.back)
{
flag.back = false;
@@ -884,7 +898,7 @@ search(short side,
MakeMove(side, node, &tempb, &tempc, &tempsf,
&tempst, &INCscore);
- CptrFlag[ply] = (node->flags & capture);
+ CptrFlag[ply] = ((node->flags & capture) != 0);
TesujiFlag[ply] = (node->flags & tesuji)
&& (node->flags & dropmask);
Tscore[ply] = node->score;