X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Fsearch.c;h=c1d8fd99eb062b75ac93ff394ca43e71164fe118;hb=2afa5512342f9662cb5d8f94ed060dbd69a74c3d;hp=7a89ef70858d841d6814e31ff501365f519e904c;hpb=8ae7e7d1b257ef36d8a9fd1cd88807954ef10764;p=gnushogi.git diff --git a/gnushogi/search.c b/gnushogi/search.c index 7a89ef7..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(); -#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;